云主机测评网云主机测评网云主机测评网

云主机测评网
www.yunzhuji.net

mysql触发器new old用法详解

MySQL触发器new old用法详解:在MySQL中,触发器可以在表上定义,当对表执行插入、更新或删除操作时自动执行。new和old关键字用于引用触发事件前后的数据。

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 ;
打赏
版权声明:主机测评不销售、不代购、不提供任何支持,仅分享信息/测评(有时效性),自行辨别,请遵纪守法文明上网。
文章名称:《mysql触发器new old用法详解》
文章链接:https://www.yunzhuji.net/internet/177010.html

评论

  • 验证码