Mysql 触发器

Mysql触发器

1、1 触发器定义

​ 触发器是由事件来触发某个操作, 事件包括 insert update delete事件,

优势:

  1. 保证数据完整性。
  2. 触发器可以帮助记录操作日志
  3. 触发器可以用在操作数据前,对数据进行合法性检测

劣势:

  1. 可读性差。由于触发器是由事件驱动,不受应用层控制。对系统维护不友好
  2. 相关数据表结构的变更,有可能会导致触发器错误。

1、2 触发器使用

  • 创建触发器

    # 触发器创建语法
    CREATE TRIGGER name
    {BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON 表名
    FOR EACH ROW
    触发执行的语句块
    
     #错误程序 固定格式
    SIGNAL SQLSTATE "错误码" SET MESSAGE_TEXT = '错误信息'
    
    
    # 举例
    DELIMITER //
    CREATE TRIGGER trigger_insert_live
    AFTER INSERT ON nlsg_live
    FOR EACH ROW
    BEGIN
    	# 自定义错误流程判断
    	IF NEW.id > 10 
    		THEN SIGNAL SQLSTATE "HY001" SET MESSAGE_TEXT = 'error id > 10'; #自定义校验
    	END IF;
    	INSERT INTO nlsg_live_info(live_pid) VALUE(NEW.id);  #NEW 为当前insert 数据对象
    END //
    DELIMITER ;
    

    说明:

    • BEFORE|AFTER 表示事件触发时间。BEFORE在事件之前触发 AFTER在事件之后触发。

    • 表名 :表示触发器监控对象。

    • {INSERT|UPDATE|DELETE} : 表示触发事件。

    • 语句块 : 可以是单条 也可以是由BEGIN...END 结构组合的复合语句。

      • 自定义错误程序: SIGNAL SQLSTATE "错误码" SET MESSAGE_TEXT = '错误信息';
      • NEW : 关键字new为触发事件(insert|update)数据的对象。
      • OLD : 关键字 为delete事件数据的对象 OLD值因为是删除操作,所以全部是只读的。
  • 查看触发器

    #方式一  查看当前数据库触发器信息
    SHOW TRIGGERS;
    #方式二  查看当前数据库某个触发器信息
    SHOW CREATE TRIGGER trigger_name;
    #方式三   查看系统库所有的触发器信息
    select * from information_schema.TRIGGERS;
    
  • 删除触发器

     #方式一
    DROP TRIGGER trigger_name;
     #方式二。 检索后删除   推荐使用
    DROP TRIGGER IF EXISTS trigger_name;
    
posted @ 2022-04-21 14:20  Fang思楠  阅读(77)  评论(0编辑  收藏  举报