我正在使用 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;
怎么了?