mysql触发器trigger笔记

ゞ 浴缸里的玫瑰 2022-04-24 01:40 310阅读 0赞

触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。

举个例子,比如你现在有两个表【用户表】和【日志表】,当一个用户被创建的时候,就需要在日志表中插入创建的log日志,如果在不使用触发器的情况下,你需要编写程序语言逻辑才能实现,但是如果你定义了一个触发器,触发器的作用就是当你在用户表中插入一条数据的之后帮你在日志表中插入一条日志信息。当然触发器并不是只能进行插入操作,还能执行修改,删除。

  • 新建触发器:

    1. CREATE TRIGGER 触发器名 BEFORE|AFTER 触发事件
    2. ON 表名 FOR EACH ROW
    3. BEGIN
    4. 执行语句列表
    5. END
    • BEFORE和AFTER参数指定了触发执行的时间,在事件之前或是之后
    • FOR EACH ROW表示任何一条记录上的操作满足触发事件都会触发该触发器

触发器实例:

需求是:当在users中插入一条数据,就会在logs中生成一条日志信息。

  • 新建用户users表:

    1. CREATE TABLE `users` (
    2. `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
    3. `name` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
    4. `add_time` int(11) DEFAULT NULL,
    5. PRIMARY KEY (`id`),
    6. KEY `name` (`name`(250)) USING BTREE
    7. ) ENGINE=MyISAM AUTO_INCREMENT=1000001 DEFAULT CHARSET=latin1;
  • 日志logs表:

    1. CREATE TABLE `logs` (
    2. `Id` int(11) NOT NULL AUTO_INCREMENT,
    3. `log` varchar(255) DEFAULT NULL COMMENT '日志说明',
    4. PRIMARY KEY (`Id`)
    5. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='日志表';
    • 创建触发器:

      1. DELIMITER $
      2. CREATE TRIGGER user_log AFTER INSERT ON users FOR EACH ROW
      3. BEGIN
      4. DECLARE s1 VARCHAR(40)character set utf8;
      5. DECLARE s2 VARCHAR(20) character set utf8;#后面发现中文字符编码出现乱码,这里设置字符集
      6. SET s2 = " is created";
      7. SET s1 = CONCAT(NEW.name,s2); #函数CONCAT可以将字符串连接
      8. INSERT INTO logs(log) values(s1);
      9. END $
      10. DELIMITER ;
  • SHOW TRIGGERS # 查看触发器
  • INSERT INTO users VALUES(1,’zs’,123); # 插入用户
  • 执行结果:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,310人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Mysql触发器Trigger

    一、什么是触发器    简单来说就是当某个表发生某些操作(插入、删除、更新)时,自动触发预先编译好的多条sql语句 二、创建触发器    模式如:create trigg

    相关 mysql触发器trigger笔记

    > 触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。 > > 举个例子,比如你现在有

    相关 触发器Trigger

    触发器(Trigger) 触发器是一种特殊类型的存储过程,不由用户直接调用。创建触发器时会对其进行定义,以便在对特定表或列作特定类型的数据修改时执行。触发器可以查询其他表