-1
我想插入删除的记录。 方案:当我收到表a上的更新时,必须删除特定技术人员的所有记录,并插入更新的记录,并将该技术员的其余删除记录插入表b中。如何使用触发器和程序插入删除的记录
我想插入删除的记录。 方案:当我收到表a上的更新时,必须删除特定技术人员的所有记录,并插入更新的记录,并将该技术员的其余删除记录插入表b中。如何使用触发器和程序插入删除的记录
对于所有的UPDATE
和DELETE
交易,请使用MERGE
声明。
并且,为了将所有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
行动。
感谢您的编辑。不知道我的键盘和显示器显示器有什么问题。 – 2014-10-03 17:11:10
我不明白为什么'MERGE'应该用来代替'INSERT','UPDATE'和'DELETE'? – 2014-10-03 20:19:52
我的理解是,OP想要对UPDATE目标表中的匹配源表的记录和DELETE匹配的记录进行匹配。并且,要将这些删除的记录插入到另一个表中。所以,前一部分是'MERGE',带有'UPDATE'和'DELETE'操作。后者是一个'TRIGGER'动作。 – 2014-10-04 07:06:57