千家信息网

MySQL中如何创建触发器

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,不知道大家之前对类似MySQL中如何创建触发器的文章有无了解,今天我在这里给大家再简单的讲讲。感兴趣的话就一起来看看正文部分吧,相信看完MySQL中如何创建触发器你一定会有所收获的。1. 背景* 触发
千家信息网最后更新 2026年11月02日MySQL中如何创建触发器

不知道大家之前对类似MySQL中如何创建触发器的文章有无了解,今天我在这里给大家再简单的讲讲。感兴趣的话就一起来看看正文部分吧,相信看完MySQL中如何创建触发器你一定会有所收获的。

1. 背景

* 触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。

* 触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件

2. 触发器特点

* 安全性。基于数据库的值使用户具有操作数据库的某种权利。

* 基于时间限制用户的操作,例如不允许下班后和节假日修改数据库数据。

* 基于数据库中的数据限制用户的操作,例如不允许股票的价格的升幅一次超过10%。

* 审计。可以跟踪用户对数据库的操作。

* 审计用户操作数据库的语句。

* 把用户对数据库的更新写入审计表。

* 实现复杂的数据完整性规则

* 实现非标准的数据完整性检查和约束。触发器可产生比规则更为复杂的限制。与规则不同,触发器可以引用列或数据库对象。例如,触发器可回退任何企图吃进超过自己保证金的期货。

* 提供可变的缺省值。

* 实现复杂的非标准的数据库相关完整性规则。触发器可以对数据库中相关的表进行连环更新。例如,在auths表author_code列上的删除触发器可导致相应删除在其它表中的与之匹配的行。

* 在修改或删除时级联修改或删除其它表中的与之匹配的行。

* 在修改或删除时把其它表中的与之匹配的行设成NULL值。

* 在修改或删除时把其它表中的与之匹配的行级联设成缺省值。

* 触发器能够拒绝或回退那些破坏相关完整性的变化,取消试图进行数据更新的事务。当插入一个与其主健不匹配的外部键时,这种触发器会起作用。例如,可以在books.author_code 列上生成一个插入触发器,如果新值与auths.author_code列中的某值不匹配时,插入被回退。

* 同步实时地复制表中的数据。

* 自动计算数据值,如果数据的值达到了一定的要求,则进行特定的处理。例如,如果公司的帐号上的资金低于5万元则立即给财务人员发送警告数据。


3. 触发器例子 [ 学生成绩 ]

* 创建成绩表 stu

mysql> CREATE TABLE stu(    -> name varchar(64),    -> course VARCHAR(32),    -> score INT     -> )ENGINE=INNODB CHARSET=utf8mb4;Query OK, 0 rows affected (0.03 sec)


* 创建触发器

当插入学生成绩小于0时,将成绩记做0,成绩大于100时,成绩记做100

   delimiter 设置结束符

mysql> delimiter //mysql> CREATE TRIGGER trg_ins_score    -> BEFORE INSERT ON stu    -> FOR EACH ROW    -> BEGIN    -> IF NEW.score < 0 THEN    -> SET NEW.score = 0;    -> ELSEIF NEW.score > 100 THEN    -> SET NEW.score = 100;    -> END IF;    -> END; //Query OK, 0 rows affected (0.01 sec)mysql> delimiter ;


* 插入数据测试

mysql> INSERT INTO stu SELECT 'tom', 'db', -10;Query OK, 1 row affected (0.03 sec)Records: 1  Duplicates: 0  Warnings: 0mysql> INSERT INTO stu SELECT 'tom', 'php', 120;Query OK, 1 row affected (0.11 sec)Records: 1  Duplicates: 0  Warnings: 0mysql> select * from stu;+------+--------+-------+| name | course | score |+------+--------+-------+| tom  | db     |     0 || tom  | php    |   100 |+------+--------+-------+2 rows in set (0.00 sec)


4. 触发器总结

* 触发器对性能有损耗,应当非常慎重使用。

* 对于事务表,触发器执行失败则整个语句回滚。

* Row 格式主从复制,触发器不会在从库上执行。

* 使用触发器时应防止递归执行。

看完MySQL中如何创建触发器这篇文章,大家觉得怎么样?如果想要了解更多相关,可以继续关注我们的行业资讯板块。

数据 触发器 数据库 成绩 用户 复杂 完整性 规则 标准 审计 更新 限制 事件 事务 学生 时间 语句 监视 特殊 主从 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 美国互联网科技巨头监管 亿策互联网科技 狮子座互联网科技有限公司 撒么互联网科技公司 互联网科技咨询 成都玖崟互联网科技有限公司乐商圈怎么样 央行互联网金融科技公司 宁夏科技产业互联网案例 广州市恰铎互联网科技有限公司 电子科技大学互联网创业大赛 恒生互联网科技业指数调整周期 互联网方面的科技前沿 有人说阿里系是互联网科技企业 下一代互联网重大应用科技园 广东鹅鹅鹅互联网科技有限公司 福建互联网展示科技馆设计 国产互联网科技公司 湖北辰鑫科技互联网 美国五大互联网科技公司市值多少 黑龙江互联网科技公司 互联网科技企业 国智互联网科技 重庆互联网络科技 互联网与未来科技 亿策互联网科技 互联网科技公司招聘 汽车互联网创新科技园 畅思互联网科技 互联网金融科技公司的优势 有人说阿里系是互联网科技企业
0