私はPostgreSQLを使用しています。1つのクエリで更新と挿入を行います(アップではありません)
は、I Aは、B、C & D.
表A、表Bへの外部キーを持つテーブルを持っている(そう一対多)。
表C & Dには表Aへの外部キー(1対多)があります。 ようなので、それが見えます:
B: - > A: - > C & D
今私は関係を作るために中間テーブルEを追加したい:
E: - > C & D(一対多)
B - > E(一対一FK有する)
B - > A(1対多)
IテーブルFにテーブルEへの外部キーも持たせる必要があります。
テーブルEにはIDカラムが1つだけあります。
は、今私は、移行を記述する必要があり、どのようにEに行を追加すると、更新を同時に
B疑似SQLでは、それがどのように見えるしなければならない見当がつかない:
UPDATEのB SET A_ID = ID
WITH inserted_rows AS (
INSERT INTO A(...) VALUES (...) RETURNING *
) UPDATE B SET A_id = a.id FROM inserted_rows a WHERE ...;
: INSERT INTO A(ID)
私はあなたの質問には不明です。あなたは取引が必要ですか? 'BEGIN;インサート...;更新...; COMMIT; ' – hunteke