触发器主要分为哪几种类型?都有什么作用?
触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。
更多
好的,触发器主要根据它们的触发时机和作用对象来分类。以下是几种主要的触发器类型及其作用:
-
DML触发器
- 触发时机: 在发生数据操作语言事件时触发。这些事件包括:
INSERT(插入数据)UPDATE(更新数据)DELETE(删除数据)
- 作用:
- 数据完整性增强: 强制执行复杂的业务规则和数据一致性约束(通常用于简单检查约束无法实现的情况)。
- 审计追踪: 自动记录数据的变更历史(谁修改的、何时修改的、修改前的旧值、修改后的新值)。
- 级联操作: 自动在其他相关表上进行插入、更新或删除(例如,删除主记录时自动删除子记录,更新主键时自动级联更新外键)。
- 数据派生: 在数据变更时自动计算并存储派生值(例如,更新订单时自动重新计算总金额)。
- 安全控制: 基于内容或上下文控制某些操作(例如,禁止在周末更新某些表)。
- 进一步细分:
BEFORE/AFTER 触发器:BEFORE 触发器:在触发事件执行之前运行,常用于验证输入数据、修改即将插入或更新的值、阻止非法操作。AFTER 触发器:在触发事件成功执行之后运行,常用于记录审计日志、进行级联操作、或计算汇总信息(因为这时数据变更已完成且可见)。
行级触发器 vs. 语句级触发器:行级触发器:触发事件每影响一行数据,该触发器就执行一次。例如,一个更新语句影响了100行数据,则行级触发器会被调用100次。常用于需要检查或操作每一行数据的场景(如审计每一行变化)。语句级触发器:对于触发事件(一个DML语句),无论该语句影响了多少行(0行,1行或多行),该触发器都只执行一次。常用于整个操作完成后才需要执行的逻辑(如记录操作本身的发生、更新聚合表总计)。
- 触发时机: 在发生数据操作语言事件时触发。这些事件包括:
-
INSTEAD OF 触发器
- 触发时机: 代替原本要执行的
INSERT、UPDATE或DELETE操作而触发。常应用于视图上,也可以定义在表上。 - 作用:
- 使视图可更新: 对于复杂的、基于多个表的视图(如包含连接、聚合函数、
DISTINCT等的视图),其上的直接INSERT/UPDATE/DELETE操作通常是禁止的或模棱两可的。INSTEAD OF触发器允许你定义一个定制的逻辑来告诉数据库“当有人试图对这个视图执行修改时,实际上应该怎样做”,从而绕过默认的限制,使原本不可更新的视图变得“可更新”。 - 修改逻辑行为: 在表上定义时,可以用自定义操作完全取代原本要发生的操作(较少使用,主要用于实现非常特殊的逻辑拦截)。
- 使视图可更新: 对于复杂的、基于多个表的视图(如包含连接、聚合函数、
- 触发时机: 代替原本要执行的
-
DDL触发器
- 触发时机: 在发生数据定义语言事件时触发。这些事件包括:
CREATEALTERDROPTRUNCATEGRANTDENYREVOKE- 等操作数据库模式对象(如表、视图、索引、存储过程等)的命令。
- 作用:
- 模式变更审计: 记录数据库结构(模式)的变化历史(谁做了什么DDL操作、何时做的、操作的细节)。
- 安全管控: 阻止或限制对关键数据库结构的修改(例如,防止重要表被意外删除或修改)。
- 标准化强制执行: 强制实施数据库开发规范或命名约定(例如,创建新表时必须添加某些列)。
- 触发时机: 在发生数据定义语言事件时触发。这些事件包括:
-
登录触发器
- 触发时机: 在用户会话成功建立(即用户登录到数据库)后立即触发。
- 作用:
- 登录审计: 记录用户每次成功登录的信息(登录名、时间、客户端信息等)。
- 登录限制: 基于登录信息(如用户名、登录时间、登录IP地址、会话数等)阻止某些连接尝试或强制断开连接。
- 会话初始设置: 在用户会话开始时自动设置特定的环境(如配置会话级SET选项、设置初始上下文)。
总结一下各种触发器的核心目的:
- DML触发器 (Before/After, Row/Statement): 主要在数据插入、更新、删除发生时介入,用于确保数据一致性、执行审计、实现业务规则。
- INSTEAD OF触发器: 主要用来解决复杂视图的更新问题,或者完全替换表上默认的DML操作逻辑。
- DDL触发器: 主要在数据库结构(模式)发生变更时介入,用于审计模式变化和增强模式的安全性。
- 登录触发器: 主要在用户成功建立数据库连接时介入,用于审计登录活动和实施登录限制。
理解触发器的不同类型及其触发时机是设计有效数据库操作和保证数据库行为符合预期的关键。
分布式存储有哪几种类型?
分布式存储有哪几种类型?分布式存储系统是一种将数据分散存储在多台独立节点上的技术,根据数据模型可分为键值存储、列式存储、文档存储和图形存储等类型
2025-02-20 11:00:43
7天热门专题
换一换
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 芯片的工作原理是什么?
- ssd是什么意思
- 什么是蓝牙?它的主要作用是什么?
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- dtmb信号覆盖城市查询
- 怎样挑选路由器?
- 华为芯片为什么受制于美国?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- type-c四根线接法图解
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- BLDC电机技术分析
- 复位电路的原理及作用
- dsp是什么意思?有什么作用?
- iphone13promax电池容量是多少毫安
- 苹果无线充电器怎么使用?
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 传感器常见类型有哪些?
- 十大公认音质好的无线蓝牙耳机