如果table1中的id_table1(pk)的数据类型为serial(autoincrement),而table2中的id_table2的数据类型也为serial(autoincrement),如何在Postgresql中插入这两个表?
table1
id_table1(PK) columnA columnB
1 a a
2 a b
table2
id_table2(PK) columnC columnD id_table1(FK)
1 a b 1
2 a b 1
3 a b 2
4 a a 2
答案 0 :(得分:1)
WITH insert1 AS (
INSERT INTO table1 (columnA, columnB) VALUES
('x', 'y')
RETURNING id_table1
)
INSERT INTO table2 (columnC, columnD, id_table1) VALUES
('z', 'a', (SELECT id_table1 FROM insert1));
使用WITH
子句可以使INSERT
和新RETURNING
一起使用id_table1
。它可以在第二条语句执行后使用。