|

8.2.2 创建包含多条执行语句的触发器
查看帮助文档发现,在MySQL中创建触发器通过SQL语句CREATE TRIGGER来实现,其语法形式如下:
CREATE TRIGGER TRIGGER_NAME
BEFORE|AFTER TRIGGER_EVENT
ON TABLE_NAME FOR EACH ROW
BEGIN
TRIGGER_STMT
END
上述语句中比“只有一条执行语句的触发器”语法多出来了关键字BEGIN和END,在这两个关键字之间为所要执行的多个执行语句的内容,执行语句之间用分号隔开。
在MySQL软件中,一般情况下用“;”符号作为语句的结束符号,可是在创建触发器的时候,需要用到了“;”符号作为执行语句的结束符号。为了解决该问题,可以使用关键字DELIMITER语句,例如“DELIMITER$$”,可以用来实现将结束符号设置成“$$”。
下面将通过一个具体的实例来说明如何创建包含多条执行语句的触发器。
【实例8-2】执行SQL语句CREATE TRIGGER,在数据库company中存在两个表对象:部门表(t_dept)和日记表(t_diary),创建触发器实现当向部门表中插入记录时,就会在插入之后向日记表中插入两条记录,具体步骤如下:
(1)执行SQL语句DESC,查看数据库company中部门表(t_dept)和日记表(t_diary)的信息,具体SQL语句如下:
DESC t_dept;
和
DESC t_diary;
(2)执行SQL语句CREATE TRIGGER,创建触发器tri_diarytime2,具体SQL语句如下:
DELIMITER $$
CREATE TRIGGER tri_diarytime2
AFTER INSERT
ON t_dept FOR EACH ROW
BEGIN
INSERT INTO t_diary VALUES(NULL,'t_dept',now());
INSERT INTO t_diary VALUES(NULL,'t_dept',now());
END
$$
DELIMITER ;
【代码说明】上述语句中首先通过“DELIMITER $$”语句设置结束符号为“$$”,然后在关键字BEGIN和END之间编写了执行语句列表,最后通过“DELIMITER ;”语句将结束符号还原成默认结束符号“;”。
(3)为了校验数据库company中触发器tri_diarytime2的功能,可以向表t_dept中插入一条记录,然后查看表t_diary中是否执行插入当前时间操作。具体SQL语句如下:
INSERT INTO t_dept VALUES(2,'cjgongdept','ShangXi');
SELECT * FROM t_diary;
【代码说明】上述语句中首先向表t_dept中插入一条数据记录,然后查看表t_diary中数据记录。
执行结果显示,在向表t_dept中插记录之后,会向表tri_diarytime中插入两条记录,从而可以发现tri_diarytime2触发器创建成功。 |
|