解释 DBMS 中的触发器和活动数据库

dbmsdatabasebig data analytics更新于 2026/1/13 15:07:17

触发器是 DBMS 响应数据库更改而自动调用的过程,由数据库管理员 (DBA) 指定。具有一组关联触发器的数据库通常称为活动数据库。

触发器的组成部分

触发器描述包含三个部分,如下所示 −

  • 事件 − 事件是指激活触发器的数据库更改。

  • 条件 −触发器激活时运行的查询称为条件。

  • 操作 −触发器激活且其条件为真时执行的过程。

触发器的用途

触发器可用于以下任何用途 −

  • 实现任何无法使用完整性约束实现的复杂业务规则。

  • 触发器将用于审核流程。例如,跟踪对表所做的更改。

  • 触发器用于在另一个相关操作发生时自动执行操作。

触发器的类型

不同类型的触发器如下 −

  • 语句级触发器 − 无论语句影响的行数有多少,它只会针对 DML 语句触发一次。语句级触发器是默认的触发器类型。

  • 前触发器 − 在定义触发器时,我们可以指定触发器是在执行 INSERT、DELETE 或 UPDATE 等命令之前触发,还是在命令执行之后触发。前触发器会在执行操作之前自动用于检查数据的有效性。例如,如果在特定情况下不允许删除行,我们可以使用前触发器来阻止行的删除。

  • 后触发器 − 它在触发操作完成后使用。例如,如果触发器与 INSERT 命令相关联,则它会在行插入表后触发。

  • 行级触发器 − 它会在受 DML 命令影响的每一行触发。例如,如果 UPDATE 命令更新了 150 行,则行级触发器会触发 150 次,而语句级触发器只会触发一次。

创建数据库触发器

要创建数据库触发器,我们使用 CREATE TRIGGER 命令。创建触发器时需要提供的详细信息如下 −

  • 触发器的名称。
  • 要关联的表。
  • 触发器触发时间:之前或之后。
  • 调用触发器的命令 - UPDATE、DELETE 或 INSERT。
  • 是否为行级触发器。
  • 筛选行的条件。
  • 触发器触发时要执行的 PL/SQL 块。

创建数据库触发器的语法如下 −

CREATE [OR REPLACE] TRIGGER triggername
{BEFORE|AFTER}
{DELETE|INSERT|UPDATE[OF COLUMNS]} ON table
[FOR EACH ROW {WHEN condition]]
[REFERENCE [OLD AS old] [NEW AS new]]
BEGIN
PL/SQL BLOCK
END.

相关文章