カスケードコピーを作成したいと思います。モデルがあり、このモデルの仕様は 4 つのテーブルに格納されており、1 つのモデルはテーブル内の MODEL_ID によって識別されます。MODEL の MODEL_ID が主キーで、新しい MODEL を追加することで MODEL_ID が 1 つ増えます。
モデルのコピーを作成するにはどうすればよいですか?
ありがとう。
MODEL_ID= で識別されるモデルをコピーする必要があると仮定すると、old_model_id
最初に新しい MODEL_ID を作成する必要があります (たとえば、 という変数に格納されますnew_model_id
)。たとえば、シーケンスを使用します (SEQ_ID_MODEL
以下のコードで呼び出されますが、別の手法を使用して作成することもできます)。新しい ID)。
次に、モデルを取得して古い ID ( old_model_id
) でコピーし、新しい ID ( ) を使用して挿入する4 つのテーブルのそれぞれに対して挿入コマンドを記述する必要がありますnew_model_id
。
PROCEDURE P_COPY_MODEL
(
old_model_id IN NUMBER
)IS
new_model_id number;
begin
select SEQ_ID_MODEL.nextval into new_model_id from dual;
insert into table1(MODEL_ID, COLUMN_1, COLUMN_2, ..., COLUMN_N)
select (new_model_id, COLUMN_1, COLUMN_2, ..., COLUMN_N)
from table1 where MODEL_ID = old_model_id;
insert into table2(MODEL_ID, COLUMN_1, COLUMN_2, ..., COLUMN_M)
select (new_model_id, COLUMN_1, COLUMN_2, ..., COLUMN_M)
from table2 where MODEL_ID = old_model_id;
--and so on for table3 and table4
end;