-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