私は3つの属性を持つ1つのテーブルA:挿入データは、あるクエリでFKと他のテーブルを更新
ID(PK)、単位(VARCHAR2)、VALUE(番号)
そして私は外部キーを介してテーブルAのPKを参照する別のテーブルBを持っています。
ID、表BにおいてFK_TABLE_A
は既に記録されているが、属性FK_TABLE_Aの値がヌルです。私が欲しいのは、表Bのすべてのレコードは、表Aに新しいデータを挿入し、私が持っているどのような表B.
に外部キーとして新しく作成された主キーを参照することにより、表AのPKに独自参照を得ることであり、 私は今、次のSQLを経由して新しいデータを挿入することができます:これまでに行われ
INSERT INTO TABLE_A(ID, UNIT, VALUE) VALUES (TABKE_A_SEQ.nextval, 'SOME_STRING', 1);
そして、私は
UPDATE TABLE_B SET FK_TABLE_A = 123; //123 is just an example PK
表Bに手でrefernceを更新することができます。しかし、私は、各RECOを照会する必要はありません毎回DBを使用するのではなく、最初のinsert
と2番目のupdate
を1つのクエリで組み合わせる必要があります。 この更新では、テーブルAの新しく作成されたPKが参照として使用されます。
これは可能ですか?
私はDBとしてOracleを使用しています。あなたが持っていないなどが
INSERT INTO TABLE_A(ID, UNIT, VALUE) VALUES (TABKE_A_SEQ.nextval, 'SOME_STRING', 1);
UPDATE TABLE_B SET FK_TABLE_A = TABKE_A_SEQ.currval;
(:あなたはあなたのセッションでシーケンスを使用したら
あなたは自分のアップデートでは、 '123' insteadof' TABKE_A_SEQ.currval'を使用して意味しますか? PK/FKの関係がまだない場合、更新するテーブルBの行をどのように知っていますか? –
あなたのTABLE_BはTABLE_Aを参照しています。更新する子行をどのように知っていますか? TABLE_Aに挿入されている場合は、TABLE_Bの挿入でなければならず、更新する必要はありません。 –
Table_Bの各レコードはもちろん、異なる外部キーを取得する必要があります。 (これは、表Aの新しく作成された項目の主キーです) – mrkernelpanic