MySQL触发器是一种特殊的存储过程,它会在指定的事件(如插入、更新或删除)发生时自动执行,触发器可以用于实现数据完整性约束、审计日志记录等功能。
创建触发器的语法如下:
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语句。
以下是一些常见的触发器示例:
1、在插入数据前检查数据完整性:
DELIMITER // CREATE TRIGGER check_before_insert BEFORE INSERT ON users FOR EACH ROW BEGIN IF NEW.age < 0 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '年龄不能为负数'; END IF; END; // DELIMITER ;
2、在更新数据后记录日志:
DELIMITER // CREATE TRIGGER log_after_update AFTER UPDATE ON users FOR EACH ROW BEGIN INSERT INTO user_log (user_id, action, updated_at) VALUES (OLD.id, 'UPDATE', NOW()); END; // DELIMITER ;
3、在删除数据前检查是否被引用:
DELIMITER // CREATE TRIGGER check_before_delete BEFORE DELETE ON orders FOR EACH ROW BEGIN DECLARE ref_count INT; SELECT COUNT(*) INTO ref_count FROM order_items WHERE order_id = OLD.id; IF ref_count > 0 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '订单已被引用,无法删除'; END IF; END; // DELIMITER ;
最新评论
本站CDN与莫名CDN同款、亚太CDN、速度还不错,值得推荐。
感谢推荐我们公司产品、有什么活动会第一时间公布!
我在用这类站群服务器、还可以. 用很多年了。