gpt4 book ai didi

postgresql - 如何在 PostgreSQL DML SQL 文件中重新使用序列值作为外键?

转载 作者:行者123 更新时间:2023-11-29 13:50:20 25 4
gpt4 key购买 nike

我想创建一个 SQL 文件以将测试数据插入我的数据库。我有一个用于整个数据库的全局序列,我也想在这里使用它。

为此,在创建 PK id 字段时,我使用了 nextval("mySeq")。为了稍后在 FK 中引用它,我可以使用 currval("mySeq")。当我创建一个包含多个 FK 的表时,问题就来了。在那种情况下,我需要序列中的多个先前值。

这是一个小例子:

insert into table1 (id) values( nextval("seq") );
insert into table2 (id) values( nextval("seq") );
insert into table3 (id) values( nextval("seq") );

insert into table_sum (table1_FK, table2_FK, table3_FK) values ( ????????????? )

在这种情况下我能/应该做什么?如果这不是正确的方法,我也对替代解决方案感兴趣。 :)

最佳答案

with
t1 as (insert into table1 (id) values( nextval("seq") ) returning id),
t2 as (insert into table2 (id) values( nextval("seq") ) returning id),
t3 as (insert into table3 (id) values( nextval("seq") ) returning id)
insert into table_sum (table1_FK, table2_FK, table3_FK)
select t1.id, t2.id, t3.id from t1, t2, t3;

显然它只适用于单行。如果您想在一个语句中插入多行,那么您应该以某种方式加入 CTE。

关于postgresql - 如何在 PostgreSQL DML SQL 文件中重新使用序列值作为外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42270041/

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