解释 DBMS 中的触发器和活动数据库
触发器是由DBMS自动调用以响应数据库更改的过程,由数据库管理员(DBA)指定。具有一组关联触发器的数据库通常称为活动数据库。
触发器部分
触发器描述包含三个部分,如下所示-
事件-事件是对激活触发器的数据库的更改。
条件-激活触发器时运行的查询称为条件。
操作-当触发器被激活且其条件为真时执行的过程。
触发器的使用
触发器可用于以下任何原因-
实现任何复杂的业务规则,不能使用完整性约束来实现。
触发器将用于审核流程。例如,跟踪对表所做的更改。
当另一个相关动作发生时,触发器用于执行自动动作。
触发器类型
不同类型的触发器解释如下-
语句级触发器-无论受语句影响的行数如何,它只为DML语句触发一次。语句级触发器是触发器的默认类型。
Before-triggers-在定义触发器时,我们可以指定触发器是在执行INSERT、DELETE或UPDATE等命令之前还是在执行命令之后触发。在执行操作之前,会自动使用Before触发器来检查数据的有效性。例如,如果在给定情况下不允许删除,我们可以使用before触发器来防止删除行。
After-triggers-在触发动作完成后使用。例如,如果触发器与INSERT命令关联,则在将行插入表中后触发它。
行级触发器-为受DML命令影响的每一行触发。例如,如果UPDATE命令更新150行,则行级触发器会被触发150次,而语句级触发器只会被触发一次。
创建数据库触发器
要创建数据库触发器,我们使用CREATETRIGGER命令。创建触发器时要提供的详细信息如下-
触发器的名称。
要关联的表。
何时触发触发器:之前或之后。
调用触发器的命令-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.