我想做一个级联副本。我有一个模型,这个模型的规格存储在 4 个表中,一个模型由表中的 MODEL_ID 标识。MODEL 的 MODEL_ID 为主键,MODEL_ID 增加一个新的 MODEL。
如何制作模型的副本?
谢谢。
假设您必须复制由 MODEL_ID= 标识的模型,old_model_id
首先您必须创建一个新的 MODEL_ID(例如存储在名为 的变量中new_model_id
),例如使用序列(SEQ_ID_MODEL
在下面的代码中调用,但您可以使用另一种技术来创建新身份证)。
然后,您必须为 4 个表中的每一个编写一个插入命令,检索模型以使用旧 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;