MySQL学习笔记(10)—— 触发器

文章目录

  • 一、什么是触发器
  • 二、语法
    • 1. 创建触发器
    • 2. 查看触发器
    • 3. 删除触发器

一、什么是触发器

  • 触发器(trigger)用于监视某种情况并触发某种操作,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,而是由事件来触发。例如,当对某张表进行insertdeleteupdate操作时就会触发执行它。

二、语法

1. 创建触发器

  1. 语法

    #创建触发器语法
    CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name 
    FOR EACH ROW 
    trigger_stmt
    
    • trigger_name:触发器名称

    • trigger_time:触发时间,取值有before、after

    • trigger_event:触发事件,取值有insert、update、delete

    • table_name:触发器监控的表名

    • trigger_stmt触发执行的语句,可以使用OLD、NEW来引用变化前后的记录内容

      • NEW.columnName:获取INSERT触发事件中新插入的数据
      • OLD.columnName:获取UPDATE和DELETE触发事件中被更新、删除的数据
  2. 示例:某个字段的值自动为其他两个字段的和

    //更新表后,重新求和
    create trigger xxx after update on table
    for each row
    update table set c=a+b
    
    //插入新表后,重新求和
    create trigger xxx after insert on table
    for each row
    update table set c=a+b
    

2. 查看触发器

  • 所有触发器信息都存储在information_schema数据库下的triggers表中,可以使用SELECT语句查询,如果触发器信息过多,最好通过TRIGGER_NAME字段指定查询。

  • 语法

    //查看所有触发器
    SHOW TRIGGERS\G;
    
    //查看指定触发器
    select * from information_schema.triggers 
    where trigger_name='upd_check'\G;
    

3. 删除触发器

  • 如果不需要某个触发器时一定要将这个触发器删除,以免造成意外操作,这很关键。

  • 语法:DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name

你可能感兴趣的:(MySQL)