zoukankan      html  css  js  c++  java
  • mysql的触发器

    什么是触发器

    触发器是与表有关的数据库对象,可以在 insert/update/delete 之前或之后,触发并执行触发器中定义的SQL语句。触发器的这种特性可以协助应用在数据库端确保数据的完整性 、日志记录 、数据校验等操作 。使用别名 NEW 和 OLD 来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。现在触发器还只支持行级触发,不支持语句级触发。

    解读:很多人看上面的触发器概念介绍,感觉还是很蒙圈,触发器简单的来说就是我们对数据库中的某一张表进行添加、修改或者删除的时候、就会触发我们对应的操作。

    创建触发器

    DELIMITER $
    CREATE TRIGGER 触发器名称
    BEFORE|AFTER  INSERT|UPDATE|DELETE
    ON 表名
    [FOR EACH ROW]  -- 行级触发器
    BEGIN
      触发器要执行的功能;
    END$
    DELIMITER ;

    解读:

    BEFORE|AFTER 表示是在操作之前还操作之后触发

    INSERT|UPDATE|DELETE  是添加、修改、删除的意思

    ON 表名 表示是对哪一张表进行添加、修改或者删除的时候触发我们要的操作

    需求:

    我这里有一张学生表:student和一张日志操作表:student_log,如果有人对student进行了添加、修改或者删除,我们就把这些操作的记录记录到

    student_log表中。

    学生表:

    操作日志表:

    操作日志记录的效果图:

    解读:

    第1行:INSERT是表示添加,表示对student进行新增来一条数据,表的id是3,新增的内容是什么什么
    第2行:UPDATE表示是修改,表示对student进行了内容修改,修改的id是1,修改的内容有,修改前怎么样,修改后怎么样。

    代码实现

    1、创建表

    学生表:
    CREATE TABLE student(
      id INT PRIMARY KEY AUTO_INCREMENT,  -- 学生id
      NAME VARCHAR(20),          -- 学生姓名
      age INT,              -- 学生年龄
      gender VARCHAR(5),          -- 学生性别
      score INT                           -- 学生成绩
    );
    
    日志表:
    CREATE TABLE student_log(
      id INT PRIMARY KEY AUTO_INCREMENT,  -- 日志id
      operation VARCHAR(20),        -- 操作类型 (insert update delete)
      operation_time DATETIME,      -- 操作时间
      operation_id INT,          -- 操作表的id
      operation_params VARCHAR(200)       -- 操作参数
    );

    创建INSERT类型的触发器

    now();获取的是当前的系统时间
    concat( ) ;是字符串拼接函数

    创建UPDATE类型的触发器

    创建DELETE类型的触发器

    查看触发器

    SHOW TRIGGERS;

    删除触发器

    DROP TRIGGER 触发器名称;

    触发器的总结

    1、触发器是与表有关的数据库对象

    2、可以在 insert/update/delete 之前或之后,触发并执行触发器中定义的SQL语句

    3、触发器的这种特性可以协助应用在数据库端确保数据的完整性 、日志记录 、数据校验等操作

    4、使用别名 NEW 和 OLD 来引用触发器中发生变化的记录内容

  • 相关阅读:
    TDateTime 的相关用法
    Delphi 2005 之后的版本如何装组件
    (收藏)《博客园精华集》分类索引
    用 IIS 7、ARR 與 Velocity 建设高性能的大型网站
    异常处理准则
    Linq之动态排序(字符传入)
    用存储过程构造一个虚拟日期表发现的趣事
    Linq to SQL 加注Data Annotation在 Asp.Net MVC2中的应用
    .net framework加密方法
    SQL Server到Oracle连接服务器
  • 原文地址:https://www.cnblogs.com/cangqinglang/p/15024217.html
Copyright © 2011-2022 走看看