首页 > 数据库 >PostgreSQL-从修改的行返回数据

PostgreSQL-从修改的行返回数据

时间:2022-09-04 10:12:24浏览次数:70  
标签:返回 INSERT PostgreSQL RETURNING UPDATE 修改 子句 数据

有时在操作修改的行时从修改的行中获取数据很有用。INSERT、UPDATE 和 DELETE 命令都有一个可选的 RETURNING 子句来支持这一点。使用 RETURNING 可以避免执行额外的数据库查询来收集数据,并且在很难可靠地识别修改的行时尤其有价值。

RETURNING 子句允许的内容与 SELECT 命令的输出列表相同。它可以包含命令目标表的列名,或使用这些列的值表达式。一个常见的简写是 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;

RETURNING 子句对 INSERT ... SELECT 也非常有用。

在 UPDATE 中,可用于 RETURNING 的数据是修改行的新内容。例如:

UPDATE products SET price = price * 1.10
WHERE price <= 99.99
RETURNING name, price AS new_price;

在 DELETE 中,可用于 RETURNING 的数据是已删除行的内容。例如:

DELETE FROM products
WHERE obsoletion_date = 'today'
RETURNING *;

如果目标表上有触发器,则 RETURNING 可用的数据是触发器修改的行。因此,检查由触发器计算的列是 RETURNING 的另一个常见用例。

标签:返回,INSERT,PostgreSQL,RETURNING,UPDATE,修改,子句,数据
From: https://www.cnblogs.com/shigongp/p/16654367.html

相关文章

  • PostgreSQL-插入
    创建表时,它不包含任何数据。在数据库发挥作用之前要做的第一件事就是插入数据。数据一次插入一行。您还可以在单​​个命令中插入多行,但不能插入不完整的行。即使您只知道......
  • docker修改容器的映射端口
    需要更改宿主机的端口或者要添加映射端口新建容器把原来的容器删掉,重新建一个。dockerrun-id--namerabbitmq\-p5672:5672\-p15672:15672\-p1......
  • Linux文件权限查看及修改命令chmod
    Linux文件权限查看及修改命令chmod_Linux教程_Linux公社-Linux系统门户网站 https://www.linuxidc.com/Linux/2014-10/108114.htm查看权限Linux文件访问权限分为可读,可......
  • auto作为返回值类型与decltype推断有什么区别
    对使用auto来表明函数返回类型的情况,编译器使用模板类型推导,会消除引用。decltype推断则保留返回值类型。比如template<typenameContainer,typenameIndex>auto......
  • GitHub 主页介绍及修改个人信息
    接着「敲开GitHub的大门-注册账号」一文的内容,我们继续往下介绍:注意:下面的是之前的版本,现在界面已经有所更新了,而且浏览器可以帮助我们翻译成中文,也是比较方便的.......
  • PostgreSQL-表继承
    让我们从一个例子开始:假设我们正在尝试为城市构建一个数据模型。每个州都有许多城市,但只有一个首府。我们希望能够快速检索任何特定州的首都。这可以通过创建两张表来完成,......
  • PostgreSQL-schema
    数据库包含一个或多个命名模式,这些模式又包含表。模式还包含其他类型的命名对象,包括数据类型、函数和运算符。相同的对象名称可以在不同的模式中使用而不会发生冲突;例如,sch......
  • MySQL数据库如何线上修改表结构
    一、MDL元数据锁在修改表结构之前,先来看下可能存在的问题。1、什么是MDL锁MySQL有一个把锁,叫做MDL元数据锁,当对表修改的时候,会自动给表加上这把锁,也就是不需要自己显式......
  • vimplus中修改prepare-code插件实现自动插入作者信息(转)
    https://blog.csdn.net/qq_46447716/article/details/113789928?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~Rat......
  • PostgreSQL-更改表
    当您创建一个表并意识到您犯了一个错误,或者应用程序的需求发生变化时,您可以删除该表并重新创建它。但是,如果表已经被数据填充,或者表被其他数据库对象引用(例如外键约束),这不......