数据库——触发器基础知识

Welcome ·
更新时间:2024-11-10
· 900 次阅读

目录

1 触发器的定义

2 创建和执行触发器

2.1 触发器中的 new和 old

2.2 创建触发器

2.3 执行触发器

3 删除触发器

4 查看触发器

5 触发器的优点与缺点

1 触发器的定义

触发器(trigger)是和表关联的特殊的存储过程,当数据库系统执行insert、update和delete事件时,会激活使其执行相应的操作。

2 创建和执行触发器 2.1 触发器中的 new和 old

在MySQL中用oldnew表示触发器执行前和执行后的数据。

new在before触发器中赋值、取值,在after触发器中取值。在after的触发器中,new的赋值已经结束了,只能读取内容。


深入了解:https://www.cnblogs.com/joyco773/p/5787088.html

2.2 创建触发器 -- 单个执行语句的触发器 CREATE trigger 触发器名 before/after 触发事件 ON 表名 FOR EACH ROW 执行语句 -- 多个执行语句的触发器 CREATE trigger 触发器名 before/after 触发事件 ON 表名 FOR EACH ROW BEGIN 执行语句 END

MySQL是按照BEFORE触发器、行操作、AFTER触发器的顺序执行的

2.3 执行触发器

例如:test表插入时将新数据trig列设为insert_trigger

create trigger insert_trigger before insert             on test for each row             set new.trigger='insert_trigger';

 navicat触发器

 插入数据

 结果

3 删除触发器 DROP trigger [IF EXISTS] [schema_name.]trigger_name

schema_name是数据库的名称,trigger_name是要删除的触发器的名称。

4 查看触发器

在MySQL中,所有的触发器的定义都存在于INFORMATION_SCHEMA数据库的triggers表中,可以通过查询命令SELECT来查看,具体语法如下:

SHOW trigger [FROM schema_name];
5 触发器的优点与缺点

优点:

安全性
可以基于数据库的值使用户具有操作数据库的某种权利。可以基于时间限制用户的操作,例如不允许下班后和节假日修改数据库数据;可以基于数据库中的数据限制用户的操作,例如不允许股票的价格的升幅一次超过10%。

审计
可以跟踪用户对数据库的操作。   审计用户操作数据库的语句;把用户对数据库的更新写入审计表。

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

实现复杂的非标准的数据库相关完整性规则。
触发器可以对数据库中相关的表进行连环更新。
在修改或删除时级联修改或删除其它表中的与之匹配的行。
在修改或删除时把其它表中的与之匹配的行设成NULL值。
在修改或删除时把其它表中的与之匹配的行级联设成缺省值。
触发器能够拒绝或回退那些破坏相关完整性的变化,取消试图进行数据更新的事务。

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

SQL触发器提供了运行计划任务的另一种方法。自动计算数据值,如果数据的值达到了一定的要求,则进行特定的处理。例如,如果公司的帐号上的资金低于5万元则立即给财务人员发送警告数据。

缺点:

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

参考:

https://blog.51cto.com/9291927/2095105  (触发器应用)

https://www.cnblogs.com/joyco773/p/5787088.html (对数据库触发器new和old的理解)


作者:曹杜安



数据 触发器 数据库

需要 登录 后方可回复, 如果你还没有账号请 注册新账号