Postgresql
在多個表中批量插入
我有兩個表,我在其中執行一些批量插入:
- 鍵:key_id (pk)、key_name
- related_key:related_key_id (pk), key_id (fk)
首先
INSERT
:values_data = "($$key_1$$), ($$key_2$$)" INSERT INTO key (key_name) VALUES values_data
秒
INSERT
:values_data = "(1, `the id of the first value inserted in key`) , (1, `the id of the sec value inserted in key`)" INSERT INTO related_key (related_key_id, key_id) VALUES values_data
我不知道如何做第二個
INSERT
,因為我不知道如何為插入到key
表中的行獲取這些 ID。或者有沒有更好的方法來做到這一點?
使用數據修改 CTE將插入連結到單個語句中。
從您的範例中假設您要在所有行中插入
1
for 。related_key_id
WITH ins_key AS ( INSERT INTO key (key_name) VALUES ($$key_1$$) , ($$key_2$$) RETURNING key_id -- return newly generated key_id(s) ) INSERT INTO related_key (related_key_id, key_id) SELECT 1, key_id FROM ins_key;