文章目录

  • 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(触发器)相关推荐

  1. 数据库——SQL语句(触发器)

    目录 1 AFTER触发器 2 INSTEAD OF触发器 1 AFTER触发器 [USE <数据库名> GO] CREATE TRIGGER <触发器名> ON <表名 ...

  2. [Qt教程] 第26篇 数据库(六)SQL关系表格模型QSqlRelationalTableModel

    [Qt教程] 第26篇 数据库(六)SQL关系表格模型QSqlRelationalTableModel 楼主  发表于 2013-5-21 20:54:13 | 查看: 677| 回复: 6 SQL关 ...

  3. 关于SQL中的触发器(数据库)

    关于在SQL中的触发器相关知识(就业面试题库.数据库) 1.触发器是什么? 触发器是一个特殊的存储过程,它被捆绑在SQL的表格或者视图上. 它不能直接调用,主要通过事件来触发,而被被动的执行. ps: ...

  4. sql replace替换多个字符_牛客网数据库SQL实战详细剖析(4150)

    文章来源:大数据肌肉猿 作者:无精疯 这是一个系列文章,总共61题,分6期,有答案以及解题思路,并附上解题的一个思考过程.具体题目可参考牛客网的SQL实战模块:https://www.nowcoder ...

  5. 数据库工作笔记012---mysql触发器trigger 实例详解_保证数据库完整性还是不错的

    mysql的触发器,可以挺好的保证数据库的数据的完整性,这个还是不错的 JAVA技术交流QQ群:170933152 比如: 我一个表中的数据有变化,那么与之关联的几个表可以通过触发器来实现同步 --- ...

  6. 数据库SQL优化大总结

    (一)索引的作用 索引通俗来讲就相当于书的目录,当我们根据条件查询的时候,没有索引,便需要全表扫描,数据量少还可以,一旦数据量超过百万甚至千万,一条查询sql执行往往需要几十秒甚至更多,5秒以上就已经 ...

  7. 数据库mysql进阶—trigger触发器

    触发器 在实际开发中,我们经常会遇到这样的情况:有两个或者多个相互关联的表,如商品信息和库存信息分别存放在2个不同的数据表中,我们在添加一条新的商品记录的时候,为了保证数据的完整性,必须同时在库存表中 ...

  8. MySQL5_存储过程-sql编程-函数-触发器-用户管理

    文章目录 MySQL_存储过程-sql编程-函数-触发器-用户管理 建立表 1.存储过程(procedure) (1)创建存储过程 (2)参数的类别 (3)删除存储过程 (4)查看存储过程的信息 (5 ...

  9. PL/SQL -- INSTEAD OF 触发器

    为什么80%的码农都做不了架构师?>>>    --============================== -- PL/SQL --> INSTEAD OF 触发器 -- ...

  10. 关于数据库SQL优化

    1.数据库访问优化 要正确的优化SQL,我们需要快速定位能性的瓶颈点,也就是说快速找到我们SQL主要的开销在哪里?而大多数情况性能最慢的设备会是瓶颈点,如下载时网络速度可能会是瓶颈点,本地复制文件时硬 ...

最新文章

  1. 页面 table 可编辑的实现
  2. ueditor初始化
  3. HTML5之Viewport详解
  4. iOS - OC NSSize 尺寸
  5. 关于flex布局,我大多数常用的几个点
  6. 雷军:小米将扩招5000名工程师!多个领域需要用到C++
  7. 寻找重复数—leetcode287
  8. php postgresql多条,PHPPostgreSQL函数列表 - phpStudy
  9. LeetCode 1800. 最大升序子数组和
  10. 函数或变量 rtenslearn_c 无法识别_深度学习的数学-卷积神经网络的结构和变量关系...
  11. 女孩,你为什么那么拼命工作?
  12. springMVC前后端各种类型数据绑定
  13. 实验一 分治与递归—用分治法实现元素选择 java算法
  14. 比特币交易信息 广播 服务器,《比特币白皮书》区块圣经(3)时间戳服务器(Timestamp serv...
  15. 第十五章、实现属性以访问字段
  16. Uniapp引入和使用阿里矢量图
  17. Jquery 插件开发——citylinkage(省、市、县城市联动选择)
  18. Alink(1):Alink概述
  19. 「笔耕不辍」MQ的原理以及持久化
  20. 在C++程序中使用系统热键(附代码)

热门文章

  1. ONVIF PTZ云台控制--RelativeMove
  2. cad vba 打开文件对话框_Autocad VBA初级教程 (第八课:图层操作)
  3. 年终奖怎么发才比较合理?
  4. 名著推荐 - 供大学生提高科学人文素养的60部西学名著
  5. Win11桌面贴纸功能怎么开启?
  6. 什么是CPU密集型、IO密集型?3分钟了解清楚
  7. J1939协议与CAN2.0对应关系图表
  8. Closing non transactional SqlSession导致spring事务不生效
  9. Vue入门学习(上)
  10. Android直播开发之旅(18):FFmpeg中滤镜(filter)的工作原理