PgSQL的一些语法糖

PgSQL的一些语法糖

RETURNING

在PgSQL中,在INSERT、UPDATE、DELETE命令中都有一个可选的RETURNING子句。 其好处不言而喻,例如在Mysql中,想要获取某一行B列的值并且修改该行A列的值需要发起两个语句(SELECT、UPDATE),而PgSQL使用了RETURNING关键字一条语句就能搞定,编写SQL更方便,性能也有提升(SQL服务器只需要查询一次)。

在INSERT中,用于RETURNING的数据是插入的行,例如返回依赖计算的默认值时非常方便。

CREATE TABLE users (firstname text, lastname text, id serial primary key);
//在插入数据之后,获得插入的id,如果插入多行则返回多个id
INSERT INTO users (firstname, last,name) VALUES ('Joe', 'Cool') RETURNING id;

在UPDATE中,用于RETURNING的数据是被修改行的新内容。

update users set firstname = 'kimi' where id = 2 returning firstname, lastname, id;

在DELETE中,用于RETURNING的数据是删除行的内容。

delete from users where id = 2 returning firstname, lastname, id;

此外,如果目标表上有触发器,可用于RETURNING的数据是被触发器修改的行。因此RETURNING还常用于触发器。

发表评论

邮箱地址不会被公开。 必填项已用*标注