一、触发器概念
触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,例如当对一个表进行操作( insert,delete, update)时就会激活它执行。
触发器经常用于加强数据的完整性约束和业务规则等。 触发器创建语法四要素:
1.监视地点(table)
2.监视事件(insert/update/delete)
3.触发时间(after/before)
4.触发事件(insert/update/delete)
触发器基本语法如下所示:
DROP TRIGGER if EXISTS 触发器名;
CREATE TRIGGER 触发器名 BEFORE INSERT ON 表名
FOR EACH ROW
BEGIN
sql语句
END
其中: trigger_time是触发器的触发事件,可以为before(在检查约束前触发)或after(在检查约束后触发);
trigger_event是触发器的触发事件,包括insert、update和delete,需注意对同一个表相同触发时间的相同触发事件,只能定义一个触发器;
可以使用old和new来引用触发器中发生变化的记录内容。
触发器SQL语法:
DROP TRIGGER if EXISTS triggle_insert_enroll_students;
CREATE TRIGGER triggle_insert_enroll_students AFTER INSERT ON t_course_enroll_students
FOR EACH ROW BEGIN
-- update t_course_enroll_students set pid=(select id from t_course_enroll where t_course_enroll.course_name=t_course_enroll_students.course_name) where id=t_course_enroll_students.id;
set new.pid=(select id from t_course_enroll where t_course_enroll.course_name=new.course_name);
END