我想插入已删除的记录。 场景:当我收到表a的更新时,我必须删除特定技术人员的所有记录并插入更新的记录并在表b中插入该技术人员的剩余已删除记录。
答案 0 :(得分:1)
对于所有UPDATE
和DELETE
个交易,请使用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
操作。