在postgresql中插入联接两个具有串行数据类型的表

时间:2018-12-17 12:06:28

标签: postgresql

如果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

1 个答案:

答案 0 :(得分:1)

demo:db<>fiddle

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。它可以在第二条语句执行后使用。