我有一个场景我有2个表1是源(my_data),第2个是目标(my_data_backup),我想某种归档的实际数据并将该数据移动到备份表中每天使用oracle中的合并SQL 从源表中删除。
即
my_data和my_data_backup 都有相同的架构
my_data表包含10行,my_data_backup包含0行我想在my_data_backup中插入10条记录,并从my_data中删除这些记录。
答案 0 :(得分:1)
MERGE
对目标表进行操作很有用,而不是源。
您可以使用匿名PLSQL块:
begin
delete from my_data_backup;
insert into my_data_backup
select *
from my_data;
delete from my_data;
commit;
exception
when others then
rollback;
-- handle here
end;
/
您也可以将上述内容放入程序中并调用该程序。
您可以考虑使用truncate语句而不是delete,当表大小较大时会更快但要小心它作为DDL会进行隐式提交。
execute immediate 'truncate table tablename';