作爲解決方法,我不會使用觸發器!只是改變你的設計並添加一個約束,所以只需要一個動作,因爲約束會完成其餘的動作。請查看link瞭解更多詳情。
至於觸發選項
只有一個動作觸發是可能的。 爲了便於理解看到例如:
mysql> CREATE TABLE actor(
actor_id SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
first_name VARCHAR(45) NOT NULL,
last_name VARCHAR(45) NOT NULL,
last_update TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (actor_id),
INDEX idx_actor_last_name (last_name)
);
創建第一個觸發器:
mysql> DELIMITER $$
mysql>
mysql> CREATE TRIGGER trigger1
-> AFTER INSERT
-> ON actor
-> FOR EACH ROW
-> BEGIN
-> -- code
-> END
-> $$
Query OK, 0 rows affected (0.00 sec)
創建第二個觸發:
mysql> CREATE TRIGGER trigger2
-> AFTER UPDATE
-> ON actor
-> FOR EACH ROW
-> BEGIN
-> -- code
-> END
-> $$
Query OK, 0 rows affected (0.00 sec)
創建日稅務局行動TRIGER:
mysql> CREATE TRIGGER trigger3
-> AFTER DELETE
-> ON actor
-> FOR EACH ROW
-> BEGIN
-> -- code
-> END
-> $$
DELIMITER ;Query OK, 0 rows affected (0.01 sec)
現在,讓我們嘗試創建一個堡壘觸發以相同的動作作爲第一個觸發
mysql> CREATE TRIGGER trigger11
-> AFTER INSERT
-> ON actor
-> FOR EACH ROW
-> BEGIN
-> -- code
-> END
-> $$
ERROR 1235 (42000): This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
所以結束的故事 - 你不能創建觸發器的方式你已經寫了它 - 作爲兩個不同的觸發器,因爲它們是不同的。
所以我的建議是在該表上創建兩個觸發器,並確保將它們放在塊中以避免執行級別的問題(機率很小)。
的第一件事是第一:你想要什麼在觸發你的行動做以及何時做你想讓你的觸發器運行? –