gpt4 book ai didi

sql - 插入插入的id到另一个表

转载 作者:行者123 更新时间:2023-11-29 12:45:09 26 4
gpt4 key购买 nike

场景如下:

create table a (
id serial primary key,
val text
);

create table b (
id serial primary key,
a_id integer references a(id)
);

create rule a_inserted as on insert to a do also insert into b (a_id) values (new.id);

我试图在 b 中创建一条记录,在插入到 a 表时引用 a。但我得到的是 new.id 为空,因为它是从序列自动生成的。我还尝试了一个触发器 AFTER insert FOR EACH ROW,但结果是一样的。有什么办法解决这个问题吗?

最佳答案

为简单起见,您也可以只使用 data-modifying CTE (没有触发器或规则):

WITH ins_a AS (
INSERT INTO a(val)
VALUES ('foo')
RETURNING a_id
)
INSERT INTO b(a_id)
SELECT a_id
FROM ins_a
RETURNING b.*; -- last line optional if you need the values in return

包含更多详细信息的相关答案:

或者您可以使用 currval() and lastval() :

关于sql - 插入插入的id到另一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27588544/

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