由于项目中需要使用到触发器个人就开始简单的了解了一下。但是过程中遇到了几个问题,在此记录一下。
前三步先把效果展示出来,后面会对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) DEFAULT NULL,
`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语句的问题
-