登录/注册

触发器主要分为哪几种类型?都有什么作用?

触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。

更多

好的,触发器主要根据它们的触发时机和作用对象来分类。以下是几种主要的触发器类型及其作用:

  1. DML触发器

    • 触发时机: 在发生数据操作语言事件时触发。这些事件包括:
      • INSERT(插入数据)
      • UPDATE(更新数据)
      • DELETE(删除数据)
    • 作用:
      • 数据完整性增强: 强制执行复杂的业务规则和数据一致性约束(通常用于简单检查约束无法实现的情况)。
      • 审计追踪: 自动记录数据的变更历史(谁修改的、何时修改的、修改前的旧值、修改后的新值)。
      • 级联操作: 自动在其他相关表上进行插入、更新或删除(例如,删除主记录时自动删除子记录,更新主键时自动级联更新外键)。
      • 数据派生: 在数据变更时自动计算并存储派生值(例如,更新订单时自动重新计算总金额)。
      • 安全控制: 基于内容或上下文控制某些操作(例如,禁止在周末更新某些表)。
    • 进一步细分:
      • BEFORE/AFTER 触发器
        • BEFORE 触发器:在触发事件执行之前运行,常用于验证输入数据、修改即将插入或更新的值、阻止非法操作。
        • AFTER 触发器:在触发事件成功执行之后运行,常用于记录审计日志、进行级联操作、或计算汇总信息(因为这时数据变更已完成且可见)。
      • 行级触发器 vs. 语句级触发器
        • 行级触发器:触发事件每影响一行数据,该触发器就执行一次。例如,一个更新语句影响了100行数据,则行级触发器会被调用100次。常用于需要检查或操作每一行数据的场景(如审计每一行变化)。
        • 语句级触发器:对于触发事件(一个DML语句),无论该语句影响了多少行(0行,1行或多行),该触发器都只执行一次。常用于整个操作完成后才需要执行的逻辑(如记录操作本身的发生、更新聚合表总计)。
  2. INSTEAD OF 触发器

    • 触发时机: 代替原本要执行INSERTUPDATEDELETE 操作而触发。常应用于视图上,也可以定义在表上。
    • 作用:
      • 使视图可更新: 对于复杂的、基于多个表的视图(如包含连接、聚合函数、DISTINCT等的视图),其上的直接 INSERT/UPDATE/DELETE 操作通常是禁止的或模棱两可的。INSTEAD OF触发器允许你定义一个定制的逻辑来告诉数据库“当有人试图对这个视图执行修改时,实际上应该怎样做”,从而绕过默认的限制,使原本不可更新的视图变得“可更新”。
      • 修改逻辑行为: 在表上定义时,可以用自定义操作完全取代原本要发生的操作(较少使用,主要用于实现非常特殊的逻辑拦截)。
  3. DDL触发器

    • 触发时机: 在发生数据定义语言事件时触发。这些事件包括:
      • CREATE
      • ALTER
      • DROP
      • TRUNCATE
      • GRANT
      • DENY
      • REVOKE
      • 等操作数据库模式对象(如表、视图、索引、存储过程等)的命令。
    • 作用:
      • 模式变更审计: 记录数据库结构(模式)的变化历史(谁做了什么DDL操作、何时做的、操作的细节)。
      • 安全管控: 阻止或限制对关键数据库结构的修改(例如,防止重要表被意外删除或修改)。
      • 标准化强制执行: 强制实施数据库开发规范或命名约定(例如,创建新表时必须添加某些列)。
  4. 登录触发器

    • 触发时机:用户会话成功建立(即用户登录到数据库)后立即触发。
    • 作用:
      • 登录审计: 记录用户每次成功登录的信息(登录名、时间、客户端信息等)。
      • 登录限制: 基于登录信息(如用户名、登录时间、登录IP地址、会话数等)阻止某些连接尝试或强制断开连接。
      • 会话初始设置: 在用户会话开始时自动设置特定的环境(如配置会话级SET选项、设置初始上下文)。

总结一下各种触发器的核心目的:

理解触发器的不同类型及其触发时机是设计有效数据库操作和保证数据库行为符合预期的关键。

分布式存储有哪几种类型?

分布式存储有哪几种类型?分布式存储系统是一种将数据分散存储在多台独立节点上的技术,根据数据模型可分为键值存储、列式存储、文档存储和图形存储等类型

2025-02-20 11:00:43

触发器按逻辑功能分为哪几种

触发器作为数字电路中的基本元件,根据逻辑功能的不同可以分为多种类型。这些触发器

2024-08-12 09:39:37

D触发器都有哪几种类型?对应什么样的代码?

今天我们来研究一下D触发器都有哪几种类型?又对应什么样的代码?

2022-08-02 09:07:49

输油管道腐蚀有哪几种类型?如何防腐?

输油管道腐蚀有哪几种类型?如何防腐?

资料下载 h1654156043.7003 2022-05-25 16:00:25

轴承孔磨损维修有哪几种方法?

轴承孔磨损维修有哪几种方法?

资料下载 h1654156043.7003 2022-04-01 16:30:54

轴承跑内圆有哪几种修复方式

轴承跑内圆有哪几种修复方式

资料下载 h1654156043.7003 2022-01-23 11:07:07

风机轴维修有哪几种工艺

风机轴维修有哪几种工艺

资料下载 h1654156043.7003 2021-12-03 17:47:15

SMT元器件有哪几种类型

本文档的主要内容详细介绍的是SMT元器件有哪几种类型。

资料下载 乱世殇 2020-11-27 08:00:00

inputdelay约束的是什么?有哪几种类型

inputdelay约束的是什么?有哪几种类型?outputdelay约束是什么?分析方法有哪几种?

2021-09-18 06:58:35

串口是什么?串行通信可分为哪几种类型

串口是什么?串口有什么作用?串行通信有哪几种基本的传送方式?串行通信可分为哪几种类型

2021-07-15 06:51:46

天线有哪几种类型

天线有哪几种类型?

2021-05-26 06:38:53

接地有哪几种类型

接地有哪几种类型?

2021-04-29 06:25:49

请问触发器的描述方法有哪几种

请问触发器的描述方法有哪几种?

2021-04-22 06:02:53

什么是弯曲PCB?弯曲PCB分为哪几种类型

什么是弯曲PCB?它有哪些特点?弯曲PCB分为哪几种类型?

2021-04-20 07:29:04

逻辑分析仪的主要特点有哪些?可分为哪几种类型

逻辑分析仪的主要特点有哪些?可分为哪几种类型?逻辑分析仪的工作原理是什么?逻辑分析仪通常有

2021-04-14 06:35:45
7天热门专题 换一换
相关标签