PostgreSQL中使用RETURNING子句来返回被影响行的数据

news/2025/3/14 0:55:05/

在 PostgreSQL 中,当你执行一个 UPDATEDELETE 操作时,通常希望获取被修改或删除行的数据。为此,PostgreSQL 提供了一个强大的特性,即使用 RETURNING 子句来返回被影响行的数据。

使用 RETURNING 子句

RETURNING 子句允许你在 UPDATEDELETE 语句中指定一个或多个列,这些列的数据将被返回作为查询结果的一部分。

INSERT 语句使用 RETURNING

在INSERT中,可用于RETURNING的数据是插入时的行。这在简单的插入中不是很有用,因为它只会重复客户机提供的数据。但是,当依赖于计算的默认值时,它可能非常方便。例如,当使用串行列提供唯一标识符时,RETURNING可以返回分配给新行的ID:

CREATE TABLE users (firstname text, lastname text, id serial primary key);INSERT INTO users (firstname, lastname) VALUES ('Joe', 'Cool') RETURNING id;

The RETURNING clause is also very useful with INSERT … SELECT.

superdb=# insert into employees (name, age) select 'super','30' returning name,age;name  | age
-------+-----super |  30
(1 row)
示例:UPDATE 语句使用 RETURNING

假设你有一个名为 employees 的表,包含以下列:id, name, salary。你想要更新某个员工的薪水,并同时获取更新后的员工信息。

UPDATE employees
SET salary = salary * 1.1
WHERE id = 1
RETURNING id, name, salary;

这个查询会将 id 为 1 的员工的薪水增加 10%,并返回该员工的 id, name, 和更新后的 salary

示例:DELETE 语句使用 RETURNING

同样地,如果你想要删除一个员工,并获取被删除员工的信息,你可以这样做:

DELETE FROM employees
WHERE id = 2
RETURNING id, name, salary;

这个查询会删除 id 为 2 的员工,并返回该员工的 id, name, 和 salary

注意事项

  1. 性能:虽然 RETURNING 子句非常方便,但在处理大量数据时,它可能会对性能产生影响。在生产环境中使用时,请确保评估其性能影响。

  2. 事务处理RETURNING 子句返回的数据是在事务的上下文中处理的。如果你在一个事务中执行了 UPDATEDELETE 并使用了 RETURNING,那么返回的数据只有在事务提交后才会被其他事务看到。

  3. 权限:确保执行 UPDATEDELETE 语句的用户有足够的权限访问 RETURNING 子句中指定的列。

结论

RETURNING 子句是 PostgreSQL 中一个非常有用的特性,它允许你在执行数据修改操作时直接获取被影响行的数据。这不仅可以简化代码逻辑,还可以提高查询效率。在使用时,请考虑性能影响和事务处理,以确保你的应用程序能够正确、高效地运行。


http://www.ppmy.cn/news/1536617.html

相关文章

Klick‘r3.0.4 |智能自动点击,高效省力

Klick’r 是一款专为 Android 设计的开源自动点击工具,能识别屏幕上的图像并进行相应操作。支持游戏中的自动点击、应用测试及日常任务自动化。 大小:27M 百度网盘:https://pan.baidu.com/s/1881Zfevph6_2Zhdc-H_R4A?pwdolxt 夸克网盘&…

spring boot3.2.x与spring boot2.7.x对比

Spring Boot 3.2.x 相比 Spring Boot 2.7.x 带来了许多重要的变化、新特性以及性能改进。这些新功能不仅提升了开发者的效率,还优化了应用的性能和安全性。以下是两者的主要差异、优势以及使用说明: 1. JDK 17 支持 Spring Boot 2.7.x 支持 JDK 8 至 J…

DAY84服务攻防-端口协议桌面应用QQWPS 等 RCEhydra 口令猜解未授权检测

Day84:服务攻防-端口协议&桌面应用&QQ&WPS等RCE&hydra口令猜解&未授权检测_wps漏洞复现 rce-CSDN博客https://blog.csdn.net/qq_61553520/article/details/137119893?ops_request_misc%257B%2522request%255Fid%2522%253A%25220E34BCAF-166A-4…

Elasticsearch 实战应用:从入门到项目集成

lasticsearch 作为一个分布式搜索和分析引擎,已经被广泛应用于日志处理、数据搜索、实时分析等场景。本文将带你了解 Elasticsearch 的基本概念,并通过一个实际案例展示如何将其集成到项目中。 一、Elasticsearch 简介 1.1 什么是 Elasticsearch&#…

VUE 开发——Vue学习(一)

一、认识Vue Vue是一个用于构建用户界面的渐进式框架。构建用户界面&#xff0c;即基于数据渲染出用户看到的页面。 创建Vue实例&#xff1a; <div id"app">{{ msg }}</div><script>//一旦引入VueJS核心包&#xff0c;在全局环境中&#xff0c;就…

使用CSS3与JavaScript实现炫酷的3D旋转魔方及九宫格交换动效

文章目录 前言一、项目需求背景二、CSS3 3D基础知识介绍2.1 什么是CSS3 3D&#xff1f;2.2 主要使用的CSS属性 三、使用HTML和CSS搭建魔方结构四、让魔方动起来&#xff1a;CSS3动画五、九宫格数字交换的JavaScript实现5.1 九宫格布局5.2 随机交换数字 六、随机交换与相邻格子的…

45岁被裁员的程序员,何去何从?

在当今快速变化的技术行业&#xff0c;职业生涯的稳定性受到挑战。在45岁被裁员&#xff0c;对很多程序员来说&#xff0c;可能是一种惊慌失措的体验。然而&#xff0c;这个阶段也可以被视为一个重新审视和调整方向的机会。本文将对可能的出路进行全方位的分析&#xff0c;并提…

linux解压

比如解压这个tar -zxvf hadoop-3.3.4.tar.gz -zxvf是什么&#xff1f; -z&#xff1a;告诉 tar 命令使用 gzip 程序来解压缩文件。-x&#xff1a;表示解包&#xff08;extract&#xff09;&#xff0c;即从归档文件中提取文件。-v&#xff1a;表示详细模式&#xff08;verbose…