我有一个AFTER INSERT OR UPDATE OR DELETE,我正在写存储发生在某个表中的每个记录修改的触发,通过复制INSERT和UPDATE :NEW值成镜表,并DELETE在:OLD值.
我可以通过有条件地将:NEW或者:OLD记录传递给一个程序然后插入我的历史表中来大大地解决我的代码.不幸的是,我似乎找不到通过整个:OLD或:NEW记录的方法.
我是否遗漏了某些内容,或者在调用插入过程时是否无法避免枚举每个列:NEW和:OLD列?
我想做以下事情:
DECLARE
PROCEDURE LOCAL_INSERT(historyRecord in ACCT.ACCOUNTS%ROWTYPE) IS
BEGIN
INSERT INTO ACCT.ACCOUNTS_HISTORY (ID, NAME, DESCRIPTION, DATE) VALUES (historyRecord.ID, historyRecord.NAME, historyRecord.DESCRIPTION, SYSDATE);
END;
BEGIN
IF INSERTING OR UPDATING THEN
LOCAL_INSERT(:NEW);
ELSE --DELETING
LOCAL_INSERT(:OLD);
END IF;
END;
Run Code Online (Sandbox Code Playgroud)
但我坚持这样做:
DECLARE
PROCEDURE LOCAL_INSERT(id in ACCT.ACCOUNTS.ID%TYPE,
name in ACCT.ACCOUNTS.NAME%TYPE,
description in ACCT.ACCOUNTS.DESCRIPTION%TYPE) IS
BEGIN
INSERT …Run Code Online (Sandbox Code Playgroud)