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

目录

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 触发器的优点与缺点

优点:

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

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

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

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

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

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

缺点:

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

 

参考:

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

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章