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

posted @ 2018-07-11 17:29  武当张三丰  阅读(135)  评论(0编辑  收藏  举报