广告
返回顶部
首页 > 资讯 > 数据库 >Mysql中的触发器
  • 849
分享到

Mysql中的触发器

Mysql中的触发器 2018-09-20 02:09:59 849人浏览 才女
摘要

  阅读目录 什么是触发器 特点及作用 例子:创建触发器,记录表的增、删、改操作记录 弊端 什么是触发器 简单的说,就是一张表发生了某件事(插入、删除、更新操作),然后自动触发了预先编写好的若干条sql语句的执行; 特点及

Mysql中的触发器

 

阅读目录

  • 什么是触发器
  • 特点及作用
  • 例子:创建触发器,记录表的增、删、改操作记录
  • 弊端

什么是触发器

简单的说,就是一张表发生了某件事(插入、删除、更新操作),然后自动触发了预先编写好的若干条sql语句的执行;

特点及作用

特点:触发事件的操作和触发器里的SQL语句是一个事务操作,具有原子性,要么全部执行,要么都不执行;

作用:保证数据的完整性,起到约束的作用;

例子:创建触发器,记录表的增、删、改操作记录

接下来将创建user和user_history表,以及三个触发器tri_insert_user、tri_update_user、tri_delete_user,分别对应user表的增、删、改三件事;

  • 创建user表; 复制代码
    DROP TABLE IF EXISTS `user`;
    CREATE TABLE `user` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `account` varchar(255) DEFAULT NULL,
      `name` varchar(255) DEFAULT NULL,
      `address` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    复制代码
  • 创建对user表操作历史表; 复制代码
    DROP TABLE IF EXISTS `user_history`;
    CREATE TABLE `user_history` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `user_id` bigint(20) NOT NULL,
      `operatetype` varchar(200) NOT NULL,
      `operatetime` datetime NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    复制代码
  • 创建user表插入事件对应的触发器tri_insert_user;

几点说明:

DELIMITER:改变输入的结束符,默认情况下输入结束符是分号;,这里把它改成了两个分号;;,这样做的目的是把多条含分号的语句做个封装,全部输入完之后一起执行,而不是一遇到默认的分号结束符就自动执行;

new:当触发插入和更新事件时可用,指向的是被操作的记录

old: 当触发删除和更新事件时可用,指向的是被操作的记录

 

复制代码
DROP TRIGGER IF EXISTS `tri_insert_user`;
DELIMITER ;;
CREATE TRIGGER `tri_insert_user` AFTER INSERT ON `user` FOR EACH ROW begin
    INSERT INTO user_history(user_id, operatetype, operatetime) VALUES (new.id, "add a user",  now());
end
;;
DELIMITER ;
复制代码
  • 创建user表更新事件对应的触发器tri_update_user; 复制代码
    DROP TRIGGER IF EXISTS `tri_update_user`;
    DELIMITER ;;
    CREATE TRIGGER `tri_update_user` AFTER UPDATE ON `user` FOR EACH ROW begin
        INSERT INTO user_history(user_id,operatetype, operatetime) VALUES (new.id, "update a user", now());
    end
    ;;
    DELIMITER ;
    复制代码
  • 创建user表删除事件对应的触发器tri_delete_user; 复制代码
    DROP TRIGGER IF EXISTS `tri_delete_user`;
    DELIMITER ;;
    CREATE TRIGGER `tri_delete_user` AFTER DELETE ON `user` FOR EACH ROW begin
        INSERT INTO user_history(user_id, operatetype, operatetime) VALUES (old.id, "delete a user", now());
    end
    ;;
    DELIMITER ;
    复制代码
  • 至此,全部表及触发器创建完成,开始验证结果,分别做插入、修改、删除事件,执行以下语句,观察user_history是否自动产生操作记录; 复制代码
    INSERT INTO user(account, name, address) VALUES ("user1", "user1", "user1");
    INSERT INTO user(account, name, address) VALUES ("user2", "user2", "user2");
    
    UPDATE user SET name = "user3", account = "user3", address="user3" where name="user1";
    
    DELETE FROM `user` where name = "user2";
    复制代码  

    弊端

    增加程序的复杂度,有些业务逻辑在代码中处理,有些业务逻辑用触发器处理,会使后期维护变得困难;

     

您可能感兴趣的文档:

--结束END--

本文标题: Mysql中的触发器

本文链接: https://www.lsjlt.com/news/4778.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mysql中的触发器
      阅读目录 什么是触发器 特点及作用 例子:创建触发器,记录表的增、删、改操作记录 弊端 什么是触发器 简单的说,就是一张表发生了某件事(插入、删除、更新操作),然后自动触发了预先编写好的若干条SQL语句的执行; 特点及...
    99+
    2018-09-20
    Mysql中的触发器
  • MySQL | MySQL触发器
    目录 一、创建触发器 1.2 创建只有一个执行语句的触发器 1.2 创建有多个执行语句的触发器 二、查看触发器 2.1 利用SHOW TRIGGERS语句查看触发器信息 2.2 在triggers表中查看触发器信息 三、删除触发器 一、创...
    99+
    2023-09-02
    数据库 sql mysql 数据库开发 数据库架构
  • MySQL——触发器
    基本语法 //创建触发器 CREATE TRIGGER name //删除触发器 DROP TRIGGER name 创建触发器 在创建触发器时需要给出4条信息 唯一的触发器名 触发器需要关联的表 触发器应该响应...
    99+
    2020-02-06
    MySQL——触发器
  • MySQL-触发器
    一、触发器 触发器(TRIGGER)是MySQL的数据库对象之一,从5.0.2版本开始支持。该对象与编程语言中的函数非常类似,都需要声明、执行等。但是触发器的执行不是由程序调用,也不是由手工启动,而是由事件...
    99+
    2022-10-18
  • MySQL触发器
    1、 触发器定义: 触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进...
    99+
    2019-06-10
    MySQL触发器
  • MySQL 触发器
    文章目录 1.简介2.行级与语句级触发器3.触发时机4.触发器优缺点5.创建触发器语法示例 6.查看触发器7.删除触发器参考文献 1.简介 触发器(Trigger)是与表关联的命名数据库对象,当表发生特定事件时激活。 触发器...
    99+
    2023-08-30
    mysql 触发器
  • 如果 MySQL 中存在触发器,则删除触发器?
    要删除触发器,请使用DROP命令。语法如下 −DROP TRIGGER IF EXISTS yourTriggerName;为了理解上述语法,您需要在当前数据库中有一个触发器。要检查触发器是否存在,您可以使用以下查询。我们的数据库中有一个触...
    99+
    2023-10-22
  • mysql之触发器
           触发器是一种 特殊的存储过程,不同的是存储过程要用CALL来调用,而触发器不需要使用CALL也不需要手工启动,只要当一个预...
    99+
    2022-10-18
  • mysql触发器(trigger)
    触发器的作用 监听数据的变化,以实现当数据变化时的关联操作,不过感觉没有实际作用,触发器的功能如果用代码逻辑来控制感觉会更正规些,毕竟团队中的其它人不一定会看到你定义的触发器,但一定能看到你的代码。那为何还...
    99+
    2022-10-18
  • MYSQL触发器的使用
    概念:触发器是一种特殊的储存过程,在满足定义条件操作时触发,并且自动执行触发器中预先设定好的定义的语句集合 触发器是特殊的储存过程 触发器是在对表操作时,满足条件就可以自动调用预先编译的sql语句 安全性 可以基于数据库的值使用户...
    99+
    2021-10-21
    MYSQL触发器的使用
  • mysql中有哪些触发器
    这篇文章主要介绍了mysql中有哪些触发器,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。mysql触发器有六种,分别是:1、Before Ins...
    99+
    2022-10-18
  • MySQL进阶——触发器
    1.触发器定义 同存储过程和函数类似,MySQL中的触发器也是存储在系统内部的一段程序代码,可以把它看作是一个特殊的存储过程。所不同的是,触发器无需人工调用,当程序满足定义条件时就会被MySQL自动调用。这些条件可以称为触发事件,包括INS...
    99+
    2023-10-28
    数据库
  • 十一、MySQL触发器
      MySQL的触发器和存储过程一样,都是嵌入到MySQL的一段程序。触发器是由时间来触发某个操作,这些时间包括INSERT、UODATE和DELETE语句。如果定义了触发程序,当数据库执...
    99+
    2022-10-18
  • MySQL(89)MySQL查看触发器
    MySQL查看触发器 查看触发器是指查看数据库中已经存在的触发器的定义、状态和语法信息等。MySQL 中查看触发器的方法包括 SHOW TRIGGERS 语句和查询 information_schema 数据库下的 triggers 数据表...
    99+
    2023-10-25
    mysql 数据库 sql
  • MySQL触发器trigger的使用
    Q:什么是触发器?A:  触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的特性:  1、有begin end体,begin end;之间的语句可以写的简单或者复杂 ...
    99+
    2022-10-18
  • MySQL中如何创建触发器
    不知道大家之前对类似MySQL中如何创建触发器的文章有无了解,今天我在这里给大家再简单的讲讲。感兴趣的话就一起来看看正文部分吧,相信看完MySQL中如何创建触发器你一定会有所收获的。1. 背景  ...
    99+
    2022-10-18
  • Mysql中的触发器定义与使用
    目录一、触发器的介绍二、触发器的语法(1)insert触发器(2)update触发器(3)delete触发器一、触发器的介绍 触发器是与表有关的数据库对象,指在insert/update/delete 之前或之...
    99+
    2022-11-30
    MySQL触发器的使用 MySQL触发器
  • 【MySQL触发器】触发器的使用、创建、修改及删除
    目录 一、什么是触发器 二、创建触发器 ①创建一个insert事件触发器 ②创建一个delete 事件触发器  三、触发器包含多条执行语句 四、查看触发器  ①SHOW TRIGGERS语句查看触发器 ②查看系统表triggers实现查看触...
    99+
    2023-09-17
    mysql 数据库 sql database
  • mysql触发器之触发器的增删改查操作示例
    本文实例讲述了mysql触发器之触发器的增删改查操作。分享给大家供大家参考,具体如下: 我们在创建触发器后,可以在包含触发器定义文件的数据文件夹中显示其定义。触发器作为纯文本文件存储在以下数据库文件夹中: ...
    99+
    2022-10-18
  • mysql触发器怎么用
    这篇文章给大家分享的是有关mysql触发器怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。说明触发器也是存储过程程序的一种,而触发器内部的执行SQL语句是可以多行操作的。在MySQL的存储过程程序中,要定义结...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作