博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库系统丨触发器小结
阅读量:2828 次
发布时间:2019-05-14

本文共 1054 字,大约阅读时间需要 3 分钟。

文章目录

1. 触发器的概念

数据库触发器的一类靠事务驱动的特殊过程。

触发器一旦由某用户定义,任何用户对触发器规定的数据进行更新操作,均自动激活相应的触发器采取应对措施。

触发器本质上是一条语句,当对数据库做更新操作时,它自动被系统执行。

2. 触发器的事件 - 条件 - 动作模型

image-20200607235827343

[1] 事件

引起触发器动作的事件,通常是更新操作。

[2] 条件

触发器将测试条件是否满足。如果条件满足,就执行相应的操作,否则什么也不做。

[3] 动作

如果触发器测试满足预订的条件,就由 DBMS 执行这些动作。这些动作可以是一系列对数据库的操作,这些动作也能使触发器事件撤销,如删除一个刚插入的元组等,甚至可以是对触发事件本身无关的其他操作。

3. SQL 触发器设计示例

[1] 定义 SQL 触发器
CREATE TRIGGER 
<触发器名>
{BEFORE|AFTER}
<触发事件>
ON
<表名>
[REFERENCING
<旧值或新值表名>
]FOR EACH {ROW|STATEMENT}
#下面该触发器将每一个从表book中删除行中的书名插入到一个称为bookdelete的表中CREATE TRIGGER book - deALTER DELETE ON bookREFERENCING OLD AS oldlineFOR EACH ROWINSERT ITO bookdelete VALUES(oldline.title)
[2] 设计触发器举例
#下面这个触发器规定如果需要修改 s_c 中的 grade,那么值只能升高不能降低,否则拒绝。CREATE TRIGGER trig_grade                      #创建触发器AFTER UPDATE OF grade ON s_c				   #触发事件,在s_c的grade被修改之后执行REFERENCING OLD AS oldg,NEW AS newg	#起别名FOR EACH ROW													#执行频率:每一行WHEN(oldg.grade > newg.grade)                  #触发条件		UPDATE s_c		SET grade = oldg.grade		WHERE cno = oldg.cno AND sno = oldg.sno
[3] 撤销触发器
DROP TRIGGER 
<触发器名>

转载地址:http://uqded.baihongyu.com/

你可能感兴趣的文章
Vue - 实现简单类数据存储效果(操作数组)
查看>>
MySQL - 初始化配置(单机以及多实例)
查看>>
MySQL - 重置root密码操作
查看>>
MySQL - 索引总结
查看>>
Redis - 基础总结
查看>>
Redis - 五大数据类型应用总结
查看>>
Redis - 发布订阅相关
查看>>
Redis - 事务操作、乐观锁
查看>>
Redis - 主从
查看>>
Redis - 缓存穿透、缓存雪崩、缓存击穿、DB缓存一致性、缓存淘汰
查看>>
Mongodb - 基于Linux环境的安装配置
查看>>
Mongodb - 基于Windows环境的安装配置
查看>>
Mongodb - 简单介绍、基本操作总结
查看>>
apache的日志分析
查看>>
Facebook背后的开源力量
查看>>
C# 数据库系统中使用GDI+绘制柱状图
查看>>
JAVA的堆栈详解
查看>>
android开发要点记录
查看>>
Android混合开发之Activity类与html页面之间的相互跳转(并解决黑屏问题)
查看>>
小智慧46
查看>>