• MYSQL高级第一天(4)


    触发器:

    一、概述

    1、介绍:

      触发器是与表相关的数据库对象,指在insert/update/delete之前或之后,触发并执行触发器中定义的SQL语句集合,触发器的这种特性可以协助应用在数据库端确保数据的完整性、日志记录、数据校验等操作。

      使用别名OLD和NEW来引用触发器中发生变化的记录内容,这和其它数据库是相似的,现在触发器还只支持行级触发,不支持语句级触发。

     
    触发器类型 NEW和OLD的使用
    INSERT触发器 NEW表示将要或者已经新增的记录数据
    UPDATE触发器 OLD表示更新之前的记录数据,NEW表示将要或者已经更新的记录数据
    DELETE触发器 OLD表示将要或者已经删除的记录数据

    二、语法:

    1、创建:

    --UPDATE触发器
    delimiter $;
    create trigger emp_update_trigger
    after update
    on emp
    for each row
    begin
    insert into emp_logs(id,operation,operate_time,operate_id,operate_params) values(null,'update',now(),new.id,concat('修改前:(id',old.id,',name:',old.name,',age',old.age,',salary:',old.salary,'),修改 后:(id:',new.id,',name:',new.name,',age:',new.age,',salary:',new.salary,')'));
    end$
    

     

    --INSERT触发器
    delimieter $;
    create trigger emp_insert_trigger
    after insert
    on emp
    for each row
    begin
    insert into emp_logs(id,operation,operate_time,operate_id,operate_params) values(null,'insert',now(),new.id,concat('插入后(id:',new.id,',name:',new.name,',age:',new.age,',salary:',new.salary,')'));
    end$
    

      

    --DELETE触发器
    delimiter $;
    create trigger emp_delete_trigger
    after delete
    on emp
    for each row
    begin
    insert into emp_logs(id,operation,operate_time,operate_id,operate_params) values(null,'delete',now(),old.id,concat('删除前:(id:',old.id,',name:',old.name,',age',old.age,',salary:',old.salary,')'));
    end$
    

      

    2、删除:

    drop trigger emp_delete_trigger
    

      

    3、查看:

    show triggers\G$
    

      

  • 相关阅读:
    Evaluate Reverse Polish Notation(逆波兰表达式)
    PostreSQL linux添加psql 命令
    C#用文件流读取cvs内容并返回DataTable,并把第一行设为列名
    鹅鹅鹅饿饿
    编译器和解释器
    delphi之多线程编程
    Arduino 板子 COM 接口找不到设备
    JS事件冒泡
    vi编辑器的使用(2)
    vi编辑器的使用(1)
  • 原文地址:https://www.cnblogs.com/haokan/p/16479363.html
Copyright © 2020-2023  润新知