いくつかの一括挿入を実行する2つのテーブルがあります。
最初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
テーブルに挿入された行のIDを取得する方法がわからないため、2番目のkey
を実行する方法がわかりません。
またはこれを行うより良い方法はありますか?
data-modifying CTE を使用して、単一のステートメントで挿入をチェーンします。
あなたの例から、すべての行の1
に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;