MySQL学习笔记(四)
补充知识,后续可能会用到:
1,AUTO_INCREMENT关键字(在尾部添加,放在主键后面):设置变量为自增变量
2,一般情况下,MySQL的默认是以; 作为结束执行语句,与触发器中需要的分行起冲突
解决办法:DELIMITER ||,可以将结束符号变成||
当触发器创建后,可用DELIMITER;还原;
一,触发器:顾名思义,触发器就是在对表进行插入,更新,删除操作时会触发的操作
1.1创建触发器
格式:在每个行的表名触发的操作之前/之后创建触发器名
CREATE TRIGGER 触发器名 BEFORE|AFTER 触发事件 ON 表名 FOR EACH ROW BEGIN 执行语句列表 END
触发的操作有三种:
insert:insert触发进行操作,load data和replace也同样会触发操作。
update:更新触发进行操作。
delete:删除触发进行操作,更换也会触发操作。
注意:对于一张表来说不能有俩个触发操作同样的触发器,只能各自有一个。
1.2删除触发器:
drop trigger器名
1.3触发器的作用:当对数据表进行操作前后,触发器可用来检查数据表某些数据,或是进行对数据表的操作(插入某项数据,删除某项数据)
实验用的雇员数据表,数项设置为AUTO_INCREMENT自增属性,插入时自动增加。
//增加数列列的语句:alter table employee add column number int(1)primary key auto_increment;
可以知道当前人数有7位,假定我们设定只能存入七位职员数据,通过一个触发器inspeck判断插入前人数(数目)是否超过人数限制7位
在插入员工之前创建触发器检查
对于每一行
开始
if(从员工中选择计数(id))> = 7然后
插入AAAAAAAA值(1); //由于目前的MySQL的没有抛出异常方法,设置一个语句插入不存在的表数据达到抛出异常效果
万一;
结束
|| //结束标志通过DELIMITER ||改为||
此时已知表中有六位职员,只能添加最后一位,达到触发器限制,会在添加前(之前)限制添加。
触发器可以使用的场景有很多,且具有一定逻辑性,例如:一张货物表,一张订单表,当添加一个新订单时需要检查货物数量是否达到订单要求,可以使用触发器在订单插入前检查另一表中数量。
最后,删除触发器,毕竟一张表同一类型的触发器只能有一个。
掉落触发检查;
记得要将结束符改回来:DELIMITER;
相关章节:
(一)https://blog.csdn.net/qq_38487155/article/details/79475851
(二)https://blog.csdn.net/qq_38487155/article/details/79488478
(三)https://blog.csdn.net/qq_38487155/article/details/79508140