Postgresql可以使用returning
返回自动递增的值:
insert into table1 (id) values (null) returning id;
我试图将返回值插入另一个表:
insert into table2 (id) values ((insert into table1 (id) values (null) returning id)) returning id;
但这会在嵌套into
中的insert
之前引发语法错误。
如何使用内部insert
的返回值作为外部insert
的值?
答案 0 :(得分:5)
您可以链接data modifying CTEs:
with new_t1 as (
insert into table1 (id) values (default)
returning id
)
insert into table2 (id)
select id
from new_t1;
请注意,当您明确要求将insert into table1 (id) values (null) returning id
插入该列时,null
将返回NULL
。
要确保生成一个值,您需要告诉Postgres使用该列的默认值,而不是NULL
值。