触发器和存储过程一样,都是嵌入到MySQL的一段程序。不同的是,执行存储过程需要使用CALL语句来调用,而触发器是由事件触发某些操作,这些事件包括INSERT、UPDATE、DELETE。一旦定义了触发程序,当数据库执行这些语句时,就会激发触发器执行相应的操作。本片博客将通过实例介绍触发器的定义、创建、查看以及删除。
- 创建触发器
触发器可以查询其他表,而且可以包含复杂的SQL语句,用于满足复杂的业务规则或要求。但在触发器中不能对被触发表进行操作。如下是触发器的创建语法:
CREATE TRIGGER trigger_name trigger_time trigger_event ON tb_name FOR EACH ROW trigger_statement
其中trigger_name表示触发器名称;trigger_time表示触发器时机,可以指定为BEFORE或AFTER;trigger_event标识触发事件,包括INSERT、UPDATE和DELETE;tb_name标识在哪张表上建立触发器;trigger_statement是触发程序体。触发程序可以使用BEGIN和END作为开始和结束,中间包含多条语句。
我们在以往的学生成绩表上创建一个触发器,该触发器记录最新插入的数据信息,代码执行如下:
创建触发器:CREATE TRIGGER p_in AFTER INSERT ON tb_score FOR EACH ROW BEGIN SET @info=CONCAT('studentID=', NEW.sID, ', classID=', NEW.cI