我想在表中添加一行:
CREATE TABLE actors (
id_act serial NOT NULL,
first_name text NOT NULL,
last_name text NOT NULL,
CONSTRAINT actors_pkey PRIMARY KEY (id_act)
);
INSERT INTO actors (first_name, last_name) VALUES ('Tom', 'Hanks');
使用dbeaver,此语句提供新的id:
select CurrVal(pg_get_serial_sequence('actors', 'id_act'));
对于libreoffice base,我必须添加方案的名称,这会导致错误:列“scheme\u name.table\u name”不存在我使用“scheme\u name.table\u name”“scheme\u name”“table\u name”时遇到相同的错误
如何获得新的id以供进一步使用(计算、检查等)?我不介意用currval或returning或其他什么。但是我没有找到正确的语法。
谢谢您!
3条答案
按热度按时间ogq8wdun1#
最简单的选择是使用
RETURNING
你方合同中的条款INSERT
查询:ztigrdn82#
你可以使用
insert
然后返回值:外部查询是
SELECT
,因此您的ui应该对它返回值感到满意。您甚至可以在该语句中继续处理—例如,通过添加更多CTE—这样就不需要实际获取值。
j0pj023g3#
有三种方法可以为你提供新的身份证
使用串行和主键,postgres将自动插入一个唯一的值
如果有序列,则可以在创建ddl时使用此序列,并且每次插入数据时,都会生成新的id
如果有sequence,请使用insert查询中的sequence