一:什么是触发器?
触发器是个特殊的存储过程,不同的是,执行存储过程要使用CALL语句来调用,而触发器的执行不需要调用使用CALL语句来调用,也不需要手工启动,只要当一个预定义的事件发生的时候,就会被MySQL自动调用。
二:触发器的相关操作
1:创建只有一个执行语句的触发器
语法如下:
创建account表,ins_sum触发器,插入数据,显示触动触发器之后的结果,具体sql语句如下:
2:创建有多个执行语句的触发器
语法如下:
创建test1,test2,test3三张表,testref触发器,插入数据,显示触动触发器之后的结果,具体sql语句如下:
3:查看触发器
查看触发器是指数据库中已存在的触发器的定义、状态、语法信息等。
可以使用SHOW TRIGGERS 和在TRIGGERS 表中查看触发器信息
EVENT表示激活触发器的事件,这里的触发事件为插入操作INSERT,TABLE表示激活触发器的对象表,这里为account 和test1表。
Timing表示触发器的时间,为插入之前(BEFORE);Statement 表示触发器执行的操作,还有一些其他信息,比如SQL模式,触发器的定义帐户和字符集等。
4:删除触发器
语法如下:
删除ins_sum触发器:
删除之后的结果:
5:创建触发器的注意事项:
对于相同的表,相同的事件只能创建一个触发器,比如对表account创建了BEFORE INSERT触发器
那么如果对表account再次创建一个BEFORE INSERT触发器,MYSQL就会报错,此时,只可以在表account上
创建AFTER INSERT或者BEFORE UPDATE类型的触发器