我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何正确的使用MySQL触发器

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何正确的使用MySQL触发器

如何正确的使用MySQL触发器?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

1.触发器是什么?

一类特殊的数据库程序,可以监视某种数据的操作(insert/update/delete),并触发相关的操作(insert/update/delete),保护数据的完整性。

个人理解就有点类似于Java的观察者模式,一个对象变化,观察者也跟着做出响应。

Mysql好像是从5.0以后开始支持触发器的。

2.创建触发器

创建触发器我将介绍两种方式:用语句创建,用navicat创建。

创建触发器的语法如下:

CREATE TRIGGER trigger_name trigger_time trigger_event ON tb_name FOR EACH ROW trigger_stmttrigger_name:触发器的名称tirgger_time:触发时机,为BEFORE或者AFTERtrigger_event:触发事件,为INSERT、DELETE或者UPDATEtb_name:表示建立触发器的表明,就是在哪张表上建立触发器trigger_stmt:触发器的程序体,可以是一条SQL语句或者是用BEGIN和END包含的多条语句所以可以说MySQL创建以下六种触发器:BEFORE INSERT,BEFORE DELETE,BEFORE UPDATEAFTER INSERT,AFTER DELETE,AFTER UPDATE

其中,触发器名参数指要创建的触发器的名字

BEFORE和AFTER参数指定了触发执行的时间,在事件之前或是之后

FOR EACH ROW表示任何一条记录上的操作满足触发事件都会触发该触发器

创建多个执行语句的触发器:

CREATE TRIGGER 触发器名 BEFORE|AFTER 触发事件ON 表名 FOR EACH ROWBEGIN 执行语句列表END

 NEW和OLD的使用:

触发器类型new和old的使用
insertnew代表新增的数据
updatenew代表更新后的数据,old代表更新前的数据
deleteold代表要删除的数据

某一个字段可以用new/lod.字段名

接下来我们创建2个表用来测试:

stu表:主表(被观察者)

如何正确的使用MySQL触发器

DROP TABLE IF EXISTS `stu`;CREATE TABLE `stu` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '姓名',`age` int(11) NULL DEFAULT NULL COMMENT '年龄',`sort` int(11) NULL DEFAULT NULL COMMENT '排序字段',PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 18 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

stu_log表:触发器关联表(观察者)

如何正确的使用MySQL触发器

DROP TABLE IF EXISTS `stu_log`;CREATE TABLE `stu_log` (`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`create_time` datetime(0) NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

现在我们假设有这样一个业务,在stu表新增和删除数据时,同步在stu_log中记录日志,记录name和时间。

如果不使用触发器,我们就需要编写代码来实现这个需求,但是触发器可以帮我们轻松的实现。

首先我们使用语句来创建一个insert触发器:

DROP TRIGGER IF EXISTS `insert_log`;delimiter ;;CREATE TRIGGER `add_log` AFTER INSERT ON `stu` FOR EACH ROW BEGININSERT INTO stu_log(name,create_time) VALUES(new.`name`,now());END;;delimiter ;

执行结果:

如何正确的使用MySQL触发器

然后我们再用navicat创建一个delete触发器:

step1:右键stu表,选择设计表----触发器

如何正确的使用MySQL触发器

step2:如图所示填选,选择删除前触发

如何正确的使用MySQL触发器

step3:在下方定义框内写执行语句,如图   记得点保存!

如何正确的使用MySQL触发器

语句:

beginINSERT INTO stu_log(name,create_time) VALUES(old.`name`,now());end

3.使用触发器

测试一下:新增一条数据

insert into stu (name,age) VALUES('李白',36)

查看stu表和stu_log表:

如何正确的使用MySQL触发器

如何正确的使用MySQL触发器

 如图,触发器已经生效了!

测试删除一条数据

DELETE from stu where name = '李白'

查看stu表和stu_log表:

如何正确的使用MySQL触发器

如何正确的使用MySQL触发器

关于如何正确的使用MySQL触发器问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网行业资讯频道了解更多相关知识。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何正确的使用MySQL触发器

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

下载Word文档

猜你喜欢

如何正确的使用MySQL触发器

如何正确的使用MySQL触发器?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.触发器是什么?一类特殊的数据库程序,可以监视某种数据的操作(insert/update/de
2023-06-06

Oracle Trigger触发器的正确使用方法

Oracle Trigger是一种在数据库中定义的特殊对象,它可以在特定的数据库操作(如插入、更新或删除)发生时自动触发相关的操作。以下是Oracle Trigger的正确使用方法:1. 创建Trigger:使用CREATE TRIGGER
2023-09-23

MySQL触发器如何使用

本文小编为大家详细介绍“MySQL触发器如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL触发器如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。MySQL—触发器将两个关联的操作
2023-07-05

MYSQL触发器的使用

概念:触发器是一种特殊的储存过程,在满足定义条件操作时触发,并且自动执行触发器中预先设定好的定义的语句集合触发器是特殊的储存过程触发器是在对表操作时,满足条件就可以自动调用预先编译的sql语句安全性 可以基于数据库的值使用户具有操作数据库的某种权利审计 可以跟
MYSQL触发器的使用
2021-10-21

如何正确的使用mysql-joins方法

今天就跟大家聊聊有关如何正确的使用mysql-joins方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。假设有两个表,Table_A和Table_B。这两个表中的数据如下所示:TA
2023-06-06

MySql数据库触发器如何使用

这篇文章主要讲解了“MySql数据库触发器如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySql数据库触发器如何使用”吧!一、介绍1、触发器是一种特殊的存储过程。触发器和存储过程一
2023-06-30

如何在 PHP 中使用 MySQL 触发器?

在 php 中使用 mysql 触发器需要:创建触发器:使用 sql create trigger 语句在数据库中创建触发器。触发触发器:使用 mysqli_query() 函数执行触发器。实战应用:使用 php 中 mysql 触发器强制
如何在 PHP 中使用 MySQL 触发器?
2024-05-12

如何正确的使用JAXB

这期内容当中小编将会给大家带来有关如何正确的使用JAXB,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、jaxb是什么 JAXB是Java Architecture for XML Bindin
2023-05-31

如何正确的使用pytest

本篇文章为大家展示了如何正确的使用pytest,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、安装pytest,打开dos窗口输入:pip install pytest2、通过pycharm工具下
2023-06-07

如何正确的使用javascript

本篇文章为大家展示了如何正确的使用javascript,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。使用javascript的方法:1、可以用script标签引入