在oracle中的级联副本

时间:2013-09-19 15:09:30

标签: oracle copy cascade toad

我想制作一个级联副本。我有一个MODEL,这个MODEL的规格存储在4个表中,一个MODEL由表中的MODEL_ID标识。 MODEL的MODEL_ID是主键,通过添加新的MODEL增加MODEL_ID。

如何制作模型的副本?

感谢。

1 个答案:

答案 0 :(得分:0)

假设您必须复制由MODEL_ID = old_model_id标识的模型,首先您必须创建一个新的MODEL_ID(例如存储在名为new_model_id的变量中),例如使用序列(在下面的代码中调用SEQ_ID_MODEL,但您可以使用其他技术来创建新ID。

然后你必须为4个表中的每个表编写一个insert命令,检索模型以使用旧的id(old_model_id)进行复制并使用新的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;