数据库SQL(六):Triggers(触发器)
文章目录
- 1、what are triggers
- 2、Example
- 3、Triggering Events and Actions in SQL
- 4、When Not To Use Triggers
1、what are triggers
A trigger is a statement that is executed automatically by the system as a side effect of a modification to the database. (insert, delete, update)
Also called event-condition-action rules (ECA).
A trigger allows the programmer to specify when the check occurs and under which conditions a set of actions should be performed.
A trigger allow applications to monitor database events (activities) and take actions when specified events take place.
To design a trigger mechanism, we must:
Specify the event causes the trigger and the conditions must be satisfied for trigger execution. (when a trigger is to be executed)
Specify the actions to be taken when the trigger executes.
也就是说,Trigger是一个语句,这个语句在满足一定条件时自动执行:当对数据库进行修改(增、删、改)时,记录的值满足特定条件时。Trigger也称为event-condition-action规则。
应用trigger可以使应用程序监控数据库的一些事件。
应用trigger时要做两项工作
1)说明什么条件下执行触发器:引起触发器的事件(event)和触发器执行必须满足的条件(condition);
2)触发器执行时触发的动作。
2、Example
这个例子介绍了trigger的定义。Trigger定义包括trigger的名字、触发的事件和条件以及执行的动作。
在这个例子中实现的功能是:当对section表进行insert操作时,如果增加的新的纪录的time_slot_id不在time_slot表中,那么这个这个insert操作无法成功执行,插入的数据要删掉,所有对数据库的操作rollback(回滚),恢复插入之前的数值。
这个trigger命名为timeslot_check1,事件是对数据库表section进行insert操作,trigger执行的条件是当插入section表的的新数据的time_slot_id不在time_slot表中时,由when语句指定。Trigger执行的操作时rollback。
注意:referencing new row as nrow这条语句,建立一个临时变量存储新增的数据;还有另一种方式referencing old row as orow,建立临时变量存储删掉或修改行的旧数据。as子句后是临时变量名,实际是一个临时表。
3、Triggering Events and Actions in SQL
Trigger有两个关键属性,event和action。
event是对数据库的修改操作:insert、delete和update,action根据数据管理需要完成语句。
Triggering event can be insert, delete or update;
Triggers on update can be restricted to attributes;
E.g., after update of takes on grade
Values of attributes before and after an update can be referenced
referencing old row as : for deletes and updates
referencing new row as : for inserts and updates
4、When Not To Use Triggers
写trigger时要特别小心,因为运行期间一个trigger错误会导致引发该trigger的action语句失败,而且一个trigger的动作可以引发另一个触发器,最坏情况下,会导致一个无限的触发链。
【注意】如果有其他替代方法最好不用trigger,可以用存储过程来实现相应的功能。
数据库SQL(六):Triggers(触发器)相关推荐
- 数据库——SQL语句(触发器)
目录 1 AFTER触发器 2 INSTEAD OF触发器 1 AFTER触发器 [USE <数据库名> GO] CREATE TRIGGER <触发器名> ON <表名 ...
- [Qt教程] 第26篇 数据库(六)SQL关系表格模型QSqlRelationalTableModel
[Qt教程] 第26篇 数据库(六)SQL关系表格模型QSqlRelationalTableModel 楼主 发表于 2013-5-21 20:54:13 | 查看: 677| 回复: 6 SQL关 ...
- 关于SQL中的触发器(数据库)
关于在SQL中的触发器相关知识(就业面试题库.数据库) 1.触发器是什么? 触发器是一个特殊的存储过程,它被捆绑在SQL的表格或者视图上. 它不能直接调用,主要通过事件来触发,而被被动的执行. ps: ...
- sql replace替换多个字符_牛客网数据库SQL实战详细剖析(4150)
文章来源:大数据肌肉猿 作者:无精疯 这是一个系列文章,总共61题,分6期,有答案以及解题思路,并附上解题的一个思考过程.具体题目可参考牛客网的SQL实战模块:https://www.nowcoder ...
- 数据库工作笔记012---mysql触发器trigger 实例详解_保证数据库完整性还是不错的
mysql的触发器,可以挺好的保证数据库的数据的完整性,这个还是不错的 JAVA技术交流QQ群:170933152 比如: 我一个表中的数据有变化,那么与之关联的几个表可以通过触发器来实现同步 --- ...
- 数据库SQL优化大总结
(一)索引的作用 索引通俗来讲就相当于书的目录,当我们根据条件查询的时候,没有索引,便需要全表扫描,数据量少还可以,一旦数据量超过百万甚至千万,一条查询sql执行往往需要几十秒甚至更多,5秒以上就已经 ...
- 数据库mysql进阶—trigger触发器
触发器 在实际开发中,我们经常会遇到这样的情况:有两个或者多个相互关联的表,如商品信息和库存信息分别存放在2个不同的数据表中,我们在添加一条新的商品记录的时候,为了保证数据的完整性,必须同时在库存表中 ...
- MySQL5_存储过程-sql编程-函数-触发器-用户管理
文章目录 MySQL_存储过程-sql编程-函数-触发器-用户管理 建立表 1.存储过程(procedure) (1)创建存储过程 (2)参数的类别 (3)删除存储过程 (4)查看存储过程的信息 (5 ...
- PL/SQL -- INSTEAD OF 触发器
为什么80%的码农都做不了架构师?>>> --============================== -- PL/SQL --> INSTEAD OF 触发器 -- ...
- 关于数据库SQL优化
1.数据库访问优化 要正确的优化SQL,我们需要快速定位能性的瓶颈点,也就是说快速找到我们SQL主要的开销在哪里?而大多数情况性能最慢的设备会是瓶颈点,如下载时网络速度可能会是瓶颈点,本地复制文件时硬 ...
最新文章
- 页面 table 可编辑的实现
- ueditor初始化
- HTML5之Viewport详解
- iOS - OC NSSize 尺寸
- 关于flex布局,我大多数常用的几个点
- 雷军:小米将扩招5000名工程师!多个领域需要用到C++
- 寻找重复数—leetcode287
- php postgresql多条,PHPPostgreSQL函数列表 - phpStudy
- LeetCode 1800. 最大升序子数组和
- 函数或变量 rtenslearn_c 无法识别_深度学习的数学-卷积神经网络的结构和变量关系...
- 女孩,你为什么那么拼命工作?
- springMVC前后端各种类型数据绑定
- 实验一 分治与递归—用分治法实现元素选择 java算法
- 比特币交易信息 广播 服务器,《比特币白皮书》区块圣经(3)时间戳服务器(Timestamp serv...
- 第十五章、实现属性以访问字段
- Uniapp引入和使用阿里矢量图
- Jquery 插件开发——citylinkage(省、市、县城市联动选择)
- Alink(1):Alink概述
- 「笔耕不辍」MQ的原理以及持久化
- 在C++程序中使用系统热键(附代码)
热门文章
- ONVIF PTZ云台控制--RelativeMove
- cad vba 打开文件对话框_Autocad VBA初级教程 (第八课:图层操作)
- 年终奖怎么发才比较合理?
- 名著推荐 - 供大学生提高科学人文素养的60部西学名著
- Win11桌面贴纸功能怎么开启?
- 什么是CPU密集型、IO密集型?3分钟了解清楚
- J1939协议与CAN2.0对应关系图表
- Closing non transactional SqlSession导致spring事务不生效
- Vue入门学习(上)
- Android直播开发之旅(18):FFmpeg中滤镜(filter)的工作原理