在实习过程中涉及到SQL触发器,在校时未学习过触发器的知识,因而进行上网自学整理,以下内容为我对网上资料收集整合,若侵权请联系删除,谢谢。
原文链接(https://blog.csdn.net/weixin_39941298/java/article/details/81080353)
一、创建使用触发器
(1)创建只有一个执行语句的触发器
create trigger 触发器 before|after 触发事件 on 表名 for each row 执行语句
eg:创建一个trig_book触发器,该触发器在表t_book插入一条数据后,对表t_bookType的bookNum数量对应的bookTypeId会自动加1
create trigger trig_book after insert on t_book for each row update t_bookType set bookNum = bookNum+1 where new.bookTypeId = t_booktype.id; INSERT INTO t_book VALUES(NULL,'java好',100,'ke',1);
t_book表:
t_bookType表:
(2)创建多个执行语句的触发器
create trigger 触发器名 before|after 触发事件 on 表名 for each row begin 执行语句列表 end
DELIMITER | 数据库语句 | DELIMITER;//告诉数据库这时一条语句内容
new old 触发的两个过度变量;new:新增一条语句的新增对象;old:删除一条语句的删除对象;
DELIMITER | create trigger trig_book2 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_test where old.bookTypeId = t_test.id; end | DELIMITER ;
DELETE FROM t_book WHERE id=5;
二、查看触发器
(1)SHOWTRIGGERS 语句查看触发器信息
SHOW TRIGGERS;
(2)在 triggers 表中查看触发器信息
DROP TRIGGER trig_book2 ;