解释DBMS中的触发器和活动数据库
触发器是一种过程,它由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.
广告