MySQL中的DELETE觸發器可以在刪除數據時觸發,讓我們可以在數據被刪除前或刪除后執行某些操作。DELETE觸發器的語法如下:
CREATE TRIGGER trigger_name BEFORE/AFTER DELETE ON table_name FOR EACH ROW BEGIN -- 觸發器執行的操作 END;
其中,trigger_name
是觸發器的名稱,table_name
是要觸發刪除操作的表名,BEFORE/AFTER DELETE
指明是在刪除數據前還是刪除數據后觸發,FOR EACH ROW
指明對于每一行數據都會執行觸發器操作。
我們可以在觸發器的操作中使用OLD關鍵字來訪問被刪除的數據。下面是一個例子,該觸發器記錄下每次刪除操作的時間和被刪除的用戶信息:
CREATE TRIGGER log_delete_time AFTER DELETE ON users FOR EACH ROW BEGIN INSERT INTO delete_log (deleted_by, deleted_at) VALUES (OLD.username, NOW()); END;
上面的觸發器在users
表刪除數據后,會將當前時間和被刪除的用戶名記錄在delete_log
表中。
使用DELETE觸發器時需要注意,觸發器操作不應該影響到正在執行的DELETE操作,否則可能會導致死鎖等問題。另外,DELETE操作也支持NO ACTION、CASCADE、SET NULL等外鍵約束選項,觸發器操作不應該與這些選項產生沖突。