gpt4 book ai didi

sql - 如何在 PostgreSQL 中使用 RETURNING 子句?

转载 作者:搜寻专家 更新时间:2023-10-30 19:48:37 24 4
gpt4 key购买 nike

我使用的是 PostgreSQL 8.2(应该是支持 RETURNING 的最低版本),正好是 GNU/Linux 上的 8.2.19。我尝试在自动插入的列上使用返回子句,该列也被限制为主键。新行的插入已正确完成,但返回结果为空(已通过 pgAdmin 中的查询执行器验证)。我尝试了隐式插入并为主键列指定了 DEFAULT。

我试图返回的列定义为

al_id integer NOT NULL DEFAULT nextval(('"allarmi_al_id_seq"'::text)::regclass)

插入查询就像

INSERT INTO alarms (al_id, al_descr) 
VALUES (DEFAULT, 'description')
RETURNING al_id;

allarmi_al_id_seq 显然(?)一个序列,定义为

CREATE SEQUENCE allarmi_al_id_seq
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 34564230
CACHE 1;

怎么了?

最佳答案

您还可以显式读取序列的当前值并返回:

INSERT INTO alarms (al_id, al_descr) 
VALUES (DEFAULT, 'description')
RETURNING currval('allarmi_al_id_seq') AS al_id;

请注意,currval 函数返回在 session 中最近获得的值,因此不存在并发问题(除非您有导致序列递增的触发器)。

关于sql - 如何在 PostgreSQL 中使用 RETURNING 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18694299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com