我想编写一个查询,该查询将检查表A中的条件并更新与表A中的条件匹配的所有记录,然后仅获取这些更新的记录并将它们作为新记录插入表B中。表B都具有相同的结构。 我尝试使用Merge语句执行此操作,但它仅满足我的要求的前一半,即更新记录。 请帮忙!
答案 0 :(得分:1)
执行此操作的一个选项可能是数据库触发器-与对表所做的审核更改非常相似。例如(基于Scott的模式):
SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss';
Session altered.
SQL> create table dept_audit as select * from dept where 1 = 2;
Table created.
SQL> alter table dept_audit add datum date;
Table altered.
SQL> create or replace trigger trg_bu_dept
2 after update on dept
3 for each row
4 begin
5 insert into dept_audit (deptno, dname, loc, datum)
6 values (:new.deptno, :new.dname, :new.loc, sysdate);
7 end;
8 /
Trigger created.
SQL> update dept set loc = 'Dallas' where deptno = 20;
1 row updated.
SQL> select * from dept_audit;
DEPTNO DNAME LOC DATUM
---------- -------------- ------------- -------------------
20 RESEARCH Dallas 05.11.2018 08:19:06
SQL>
因此,您只需要UPDATE
行;触发器会将它们“复制”到另一个表中。严格地说,这并不是您在一个问题中提到的“一个查询”,但希望能达到目的。