我正在使用 PostgreSQL 8.2(应该是支持 RETURNING 的最低版本),确切地说是在 GNU/Linux 上的 8.2.19 版本。我尝试在自动插入的列上使用 returning 子句,该列也作为主键进行了约束。新行的插入已正确完成,但返回的结果为空(在 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_descr) VALUES ('description') RETURNING al_id;
? - Luc M