Oracle Merge Sql在目标中插入并从源

时间:2017-03-01 03:37:21

标签: sql oracle oracle10g

我有一个场景我有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中删除这些记录。

1 个答案:

答案 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';