如何使用触发器和过程插入已删除的记录

时间:2014-10-03 16:36:11

标签: oracle

我想插入已删除的记录。 场景:当我收到表a的更新时,我必须删除特定技术人员的所有记录并插入更新的记录并在表b中插入该技术人员的剩余已删除记录。

1 个答案:

答案 0 :(得分:1)

对于所有UPDATEDELETE个交易,请使用MERGE声明。

并且,要将INSERT所有DELETED行记录到另一个表格中,请执行BEFORE DELETE trigger。例如,

CREATE [ OR REPLACE ] TRIGGER trigger_name
BEFORE DELETE
   ON table_name
   [ FOR EACH ROW ]

DECLARE
   -- variable declarations

BEGIN
   -- trigger code

EXCEPTION
   WHEN ...
   -- exception handling

END;

在触发器中添加所有必需的逻辑,以将已删除的记录插入另一个表中。

而且,如果您启用了FINE GRAINED AUDITING,那么您根本不必使用触发器。

修改关于MERGE,如上所述:

对于与源表匹配的记录的目标表UPDATE和不匹配的记录DELETE,您需要MERGE。例如:

MERGE INTO destination d
  USING source s
    ON (s.col1 = d.col1)
  WHEN MATCHED THEN
    UPDATE SET d.col2 = some_value
    DELETE WHERE d.col3 = some_value;

并且,要将这些deleted记录设为inserted到另一个表中,这是一个TRIGGER操作。