解释 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.

