我想做一個批量插入事務,但我不太確定如何使用CTE或更有效的方法來做到這一點。這是我到目前爲止有:如何在Postgres中使用CTE插入具有外鍵的多行?
with bulky as (
insert into products (title, description, price)
values ('Dope product 1', 'Buy diz', 9.99),
('Dope product 2', 'Buy diz', 8.99),
('Dope product 2', 'Buy diz', 7.99)
returning id
)
insert into product_metadata (product_id, sales_volume, date)
values (???, 80, '2017-03-21'),
(???, 50, '2017-03-21'),
(???, 70, '2017-03-21');
我CTE的問題是我不知道如何從第一插入語句個別IDS要插入到其相應的記錄進行了第二條語句'product_id'外鍵。
我將如何構造聲明使其工作?我願意提供替代解決方案,以提供更高效的方法來實現相同的結果。
編輯你的問題,說明你要插入第二個表中的行。 –
@GordonLinoff這些是我想要插入到product_metadata表中的行:(ID爲'Dope product 1',80,'2017-03-21'),(ID爲'Dope product 2',50,'2017-03 -21'),(ID爲'Dope product 3',70,'2017-03-21')。如果您對標題進行了連接(i.title = v.title),您的建議答案是否會起作用?你沒有引用第一次插入的ID,所以我不知道它是否會起作用 – Jamaal
Jamaal:@Gordon在標題上做了JOIN(i.title = v。標題)問題是你不能在第一次插入有兩個相同的項目。我爲解決這個問題做了一個解決方案,但真的很麻煩。我的建議一個接一個插入產品和元數據。 –