0%

MYSQL–触发器语法说明

创建触发器

1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TRIGGER trigger_name trigger_time trigger_event ON tb_name FOR EACH ROW trigger_stmt
trigger_name:触发器的名称
tirgger_time:触发时机,为BEFORE或者AFTER
trigger_event:触发事件,为INSERTDELETE或者UPDATE
tb_name:表示建立触发器的表明,就是在哪张表上建立触发器
trigger_stmt:触发器的程序体,可以是一条SQL语句或者是用BEGINEND包含的多条语句
所以可以说MySQL创建以下六种触发器:
BEFORE INSERT
BEFORE DELETE
BEFORE UPDATE
AFTER INSERT
AFTER DELETE
AFTER UPDATE

BEFORE和AFTER参数指定了触发执行的时间,在事件之前或是之后
FOR EACH ROW表示任何一条记录上的操作满足触发事件都会触发该触发器
触发器可以是一条SQL语句,也可以是多条SQL代码块,那如何创建呢?

1
2
3
4
5
6
7
8
DELIMITER $  #将语句的分隔符改为$
BEGIN
sql1;
sql2;

sqln
END $
DELIMITER ; #将语句的分隔符改回原来的分号”;”

在BEGIN…END语句中也可以定义变量,但是只能在BEGIN…END内部使用:

1
SET s2 = “ is created”;