zoukankan      html  css  js  c++  java
  • MySQL之触发器

    二:触发器

    1. 什么是触发器

    触发器,是一段与某个表相关的sql语句,会在某个时间点,满足某个条件后自动触发执行

    其中两个关键因素:

    • 时间点
      * 事件发生前,before|事件发生后 after

    • 事件
      * update delete insert

    在触发器包含两个对象:

    ​ old:update,delete中可用

    ​ new:update,insert 中可用

    2. 什么时候使用触发器

    场景1:当表的数据被修改时,自动记录一些数据,执行一些sql语句

    3. 创建触发器
    # 语法
    CREATE TRIGGER t_name t_time t_event ON table_name FOR EACH ROW
    begin
    stmts.....(一堆sql语句)
    end
    
    # 需求:有cmd表和错误日志表,在cmd执行失败时自动将信息存储到错误日志表中
    # 当插入cmd表的时候,如果执行状态时,失败的,那么将信息插入到errlog中
    
    #准备数据
    CREATE TABLE cmd (
        id INT PRIMARY KEY auto_increment,
        USER CHAR (32),
        priv CHAR (10),
        cmd CHAR (64),
        sub_time datetime, #提交时间
        success enum ('yes', 'no') #0代表执行失败
    );
    #错误日志表
    CREATE TABLE errlog (
        id INT PRIMARY KEY auto_increment,
        err_cmd CHAR (64),
        err_time datetime
    );
    
    after insert之后?
    
    delimiter //
    create trigger cmd_insert after insert on cmd for each row
    begin
    if new.success = "no" then
    	insert into errlog values(null,new.cmd,new.sub_time);
    end if;
    end //
    delimiter;
    
    4. 删除触发器
    drop trigger cmd_insert;
    
    5. 查看触发器
    show triggers;
    
    show create trigger 触发器名称
    
  • 相关阅读:
    MIne FirstBlog
    P6563 [SBCOI2020]一直在你身旁
    P6563 [SBCOI2020]一直在你身旁
    T122085 [SBCOI2020]时光的流逝
    LC 918. Maximum Sum Circular Subarray
    1026 Table Tennis
    LC 1442. Count Triplets That Can Form Two Arrays of Equal XOR
    LC 1316. Distinct Echo Substrings
    LC 493. Reverse Pairs
    1029 Median (二分)
  • 原文地址:https://www.cnblogs.com/plf-Jack/p/11194931.html
Copyright © 2011-2022 走看看