如何跨两个表创建插入查询,其中一个表在第二个表中具有外键

时间:2013-11-17 10:19:45

标签: sql postgresql

我有2张桌子: 1 GT;具有id和name列的批处理 2 - ;具有id,batch_id和名称列的Trans

基本上对于给定的批次,可能有多个Trans记录。

我有一个Batch记录和2个Trans记录,并希望使用SQL Batch Update将它们插入到两个表中,这些记录应使用外键(batch_id)进行绑定。

批量

id name

1 b1

id batch_id name

1 1 T1

我的问题是如何创建插入查询,这些查询在这两个表中执行插入作为一个批处理操作的一部分。

1 个答案:

答案 0 :(得分:2)

从Postgre 9.1开始,你可以这样做:

with rows as (
INSERT INTO Batch (name) VALUES ('b1') RETURNING id
)
INSERT INTO Trans(batch_id, name)
SELECT id, 'T1'
FROM rows
INSERT INTO Trans(batch_id, name)
SELECT id, 'T2'
FROM rows