1.触发器的引入
触发器(TRIGGER)是由事件来触发某个操作。这些事件包括 INSERT 语句、UPDATE 语句和 DELETE 语句。当数据库系统执行这些事件时,就会激活触发器执行相应的操作。
2.创建与使用触发器
1> 创建只有一个执行语句的触发器
REATE TRIGGER 触发器名 BEFORE | AFTER 触发事ON 表名 FOR EACH ROW 执行语句
eg:
CREATE TRIGGER ti1 AFTER INSERT
ON t_book FOR EACH ROW
UPDATE t_bookType SET bookNum = bookNum + 1 WHERE new.bookTypeId = t_bookType.id;
2> 创建有多个执行语句的触发器
语法:
CREATE TRIGGER 触发器名 BEFORE | AFTER 触发事件
ON 表名 FOR EACH ROW
BEGIN
执行语句列表
END
eg:
DELIMITER |
CREATE TRIGGER ti2 AFTER DELETE
ON t_book FOR EACH ROW
BEGIN
UPDATE t_bookType SET bookNum = bookNum-1 WHERE old.bookTypeId = t_bookType.id;
INSERT INTO t_log VALUES(NULL, NOW(), '在book表里删除了一条数据');
DELETE FROM t_text WHERE old.bookTypeId = t_text.id;
END
|
DELIMITER; //DELIMITER还有一个 | 符号是分隔符的意思,让包含在内的都执行
DELETE FROM t_book WHERE id = 1; //删除一条数据
解释:
1.里面的old 和 new 是中间变量的意思,old表示被删除的字段,new 表示增加的字段。
2.首尾的DELIMITER还有一个 | 符号是分隔符的意思,没有这个的话,BEGIN和END里的语句就会执行,而不是创建的操作。
3.里面的 NOW() 方法返回当前的时间
3.查看触发器
1> SHOW TRIGGERS 语句查看触发器信息
eg:
SHOW TRIGGERS //没有分号
2> 在 triggers 表中查看触发器信息,点击左边系统数据库information_schema,里面的triggers 表中
4.删除触发器
语法:
DROP TRIGGER 触发器名;