-1

カスケードコピーを作成したいと思います。モデルがあり、このモデルの仕様は 4 つのテーブルに格納されており、1 つのモデルはテーブル内の MODEL_ID によって識別されます。MODEL の MODEL_ID が主キーで、新しい MODEL を追加することで MODEL_ID が 1 つ増えます。

モデルのコピーを作成するにはどうすればよいですか?

ありがとう。

4

1 に答える 1

0

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;
于 2013-09-25T13:06:17.663 に答える