Mysql使用trigger觸發器說明
由於專案中需要使用到觸發器個人就開始簡單的瞭解了一下。但是過程中遇到了幾個問題,在此記錄一下。
前三步先把效果展示出來,後面會對trigger做詳細的描述
第一步:建立測試表
CREATE TABLE `t_triger_test` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`num1` INT(11) DEFAULT NULL,
`num2` INT(11) DEFAULT NULL,
`num3` INT(11) DEFAULT NULL,
`pluses` INT(11
`avg` DECIMAL(11,0) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
第二步:建立觸發器trigger
DELIMITER $$
CREATE TRIGGER trigger_testwqq BEFORE UPDATE ON t_triger_test FOR EACH ROW BEGIN IF (NEW.num1 <> 0 AND NEW.num2 <> 0 AND NEW.num3 <> 0) THEN SET NEW.AVG = (NEW.num1+NEW.num2+NEW.num3+NEW.pluses) / 4; END IF; END$$
DELIMITER ; |
第三步:填寫測試資料測試
Trigger介紹
-
什麼是trigger?
個人簡單的將trigger理解為在某種情況下可以根據我們設定的條件去自動觸發某種動作的機制。
- trigger語法
CREATE TRIGGER 觸發器名稱 BEFORE/AFTER UPDATE/INSERT/DELETE ON 表名 FOR EACH ROW BEGIN //sql邏輯語句 END$$
DELIMITER ;
---------------------------欄位說明--------------------------
|
-
trigger中遇到的一個問題
-
Can't update table 't_triger_test' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
- 解決辦法:問題的出現是由於在建立觸發器的時候sql語句的問題
-
Can't update table 't_triger_test' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.