MySQL触发器是一种特殊的存储过程,它会在特定的数据库事件(如插入、更新或删除)发生时自动执行,触发器可以用于实现数据完整性约束、审计日志记录等功能。
创建触发器
1、使用CREATE TRIGGER
语句创建触发器:
CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW trigger_body;
参数说明:
trigger_name
:触发器名称,唯一标识一个触发器。
trigger_time
:触发时机,可选值有BEFORE(事件发生前)、AFTER(事件发生后)。
trigger_event
:触发事件,可选值有INSERT(插入)、UPDATE(更新)、DELETE(删除)。
table_name
:触发器作用的表名。
trigger_body
:触发器要执行的操作,可以是SQL语句、PL/SQL代码块等。
2、示例:创建一个在向students
表插入数据之前检查学号是否重复的触发器。
DELIMITER // CREATE TRIGGER check_student_id_before_insert BEFORE INSERT ON students FOR EACH ROW BEGIN DECLARE duplicate_count INT; SELECT COUNT(*) INTO duplicate_count FROM students WHERE student_id = NEW.student_id; IF duplicate_count > 0 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '学号重复'; END IF; END; // DELIMITER ;
触发器的类型
1、行级触发器:针对每一行数据执行操作,可以使用FOR EACH ROW
关键字指定。
2、语句级触发器:针对整个SQL语句执行操作,不使用FOR EACH ROW
关键字。
3、表级触发器:针对整个表执行操作,不使用FOR EACH ROW
关键字。
触发器的生命周期
1、创建触发器:使用CREATE TRIGGER
语句创建触发器。
2、激活触发器:使用ALTER TABLE
语句激活触发器。
3、禁用触发器:使用ALTER TABLE
语句禁用触发器。
4、删除触发器:使用DROP TRIGGER
语句删除触发器。
触发器的注意事项
1、触发器必须在其所依赖的表上定义。
2、触发器不能递归调用自己。
3、如果在同一个表中有多个相同类型的触发器,MySQL将按照创建顺序执行它们,可以通过INSTALL TRIGGER
语句更改触发器的安装顺序。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/637370.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复