zoukankan      html  css  js  c++  java
  • MySql-触发器操作

    触发器

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

    支持的时间点:时间发生前before和发生后after

    支持的事件:

    • update 可用OLD访问旧数据,NEW访问新数据
    • delete 可用OLD访问新数据
    • insert 可用NEW访问新数据
    • 可以将NEW和OLD看做一个对象,其中封装了这列数据的所有字段

    创建触发器

    delimiter //  重定义行结束符
    create trigger t_name t_time t_event on table_name for each row
    begin
    sql语句
    end//
    delimiter ;
    # delimiter 用于修改默认的行结束符,由于在触发器中有多条sql语句,他们需要使用分号来结束,但是触发器是一个整体,所以需要先更换默认的行结束符
    # t_name 触发器名
    # t_time 时间点 before|after
    # t_event 事件 delete|update|insert
    # table_name 表名
    

    查看触发器

    show triggers;  # 查看所有触发器
    show create trigger 触发器名;  # 查看创建指定的触发器语句
    

    删除触发器

    drop trigger 触发器名;  
    

    举例

    #准备数据
    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
    );
    
    # 创建触发器
    delimiter //
    create trigger insert_t after insert on cmd for each row
    begin 
    if new.success = 'no' then
    insert into errlog(err_cmd,err_time) values(new.cmd,new.sub_time);
    end if;
    end//
    delimiter ;
    
    show triggers;  # 查看所有的触发器
    show create trigger insert_t;  # 查看创建触发器insert_t的语句
    
    drop trigger insert_t;  # 删除触发器insert_t
    
  • 相关阅读:
    windows pm2 开机启动
    微信小程序自定义组件封装及父子间组件传值
    cloc 统计代码行数工具
    小程序获取当前页面路径url
    小程序navigator点击有时候会闪一下
    Centos7安装python3与Python2共存
    Docker配置国内官方镜像
    Centos7下Docker的安装与使用
    Centos7yum源修改为国内阿里源
    Vim下一键运行python代码
  • 原文地址:https://www.cnblogs.com/863652104kai/p/11197564.html
Copyright © 2011-2022 走看看