一、定义
触发器是特殊的存储过程,不同的是存储过程调用要使用CALL语句,而触发器执行不需要调用CALL
也不需要手工启动,只要一个预定义的事件发生就会被MYSQL自动调用。
如对数据库进行插入、删除、更新等操作可以激活触发器并执行触发器。
触发器程序经常用于加强数据的完整性约束和业务规则。触发器类似于约束,但是比约束更灵活,
具有更精细,具有更强大的数据控制能力。
触发器优点如下:
1、执行是自动的,当对数据表进行操作时,会自动执行。
2.触发器可以通过数据库中相关的表层叠修改另外的表。
3.触发程序可以实施比FOREIGN KEY 约束、CHECK约束更为复杂的检查和操作。
二、创建触发程序
语法如下:
CREATE TRIGGER trigger_name trigger_time trigger_event
ON tb1_name FOR EACH ROW trigger_stmt
trigger_name :触发器名称
trigger_time :触发时机,可以指定为before 、after
trigger_event:触发事件 ,INSERT UPDATE 、DELETE
trigger_stmt:触发器程序体。
tb1_name :建立触发器的表名,即在哪张表上建立触发器,
例子1:创建一个单条执行语句的触发器。
首先创建一个表newstudent ,表中有两个字段,分别是id和name字段。
创建一个触发器名为in_newstu 的触发器,触发的条件是在插入数据之前,
对新插入的id字段值加1.求和计算。
插入数据
查看变量ss
例子二、创建一个触发器,当id等于4,将姓名设置为“彤彤”
例子三、创建多条执行语句触发器
CREATE TRIGGER trigger_name trigger_time trigger_event
ON tb1_table FOR EACH ROW trigger_stmt
建三张表
test1 test2 test3
要求向表
test1插入数据时,a1 值加100,然后将该值插入到a2字段中;
a1 值加200,然后将该值插入到a3字段中,
三、查看触发器
Statement 是触发器执行的操作
Timing是触发器触发时间
MYsql中所有触发器都存在infomation_schema的TRIGGERS表
四、删除触发器
DROP TRIGGER 数据库名称.触发器名称
注意:相同的表,相同的事件只能建一个触发器