Oracle数据库触发器类型简介(oracle触发器类型)
《Oracle数据库触发器类型简介》
Oracle数据库触发器是一种强大的数据库自动处理功能,它可以让数据库在某些数据变动时自动执行某种操作,从而极大的简化了数据库开发工作,让程序变得更加通用和可维护性更高。Oracle数据库触发器可以分为三种类型:Row、Statement、和Account根据注册的事件的不同类型。
Row Level Trigger:Row level trigger是指在单行数据发生更改时发生的触发器,它只对发生影响的指定行进行操作。Row Level Trigger有两种:一种是 BEFORE ROW 事件触发器,在行上发生DML(数据操作语言) 操作前触发;另一种是 AFTER ROW 事件触发器,在行发生DML操作之后触发。例如下面的trigger:
“`sql
CREATE OR REPLACE TRIGGER trigger_name
BEFORE INSERT OR UPDATE OR DELETE ON table_name
FOR EACH ROW
BEGIN
…
END;
“`
Statement Level Trigger:Statement Level Trigger是指针对整条语句,而不针对行发生动作时发生的触发器,它对所有对所bro命令处理的行均生效,Statement Level Trigger也分为BEFORE STATEMENT和AFTER STATEMENT的事件触发器,与Row Level Trigger相同,BEFORE STATEMENT与INSERT、UPDATE、DELETE、MERGE操作保持一致,AFTER STATEMENT是在该条bro命令执行完毕后触发。例如下面的trigger:
“`sql
CREATE OR REPLACE TRIGGER trigger_name
BEFORE INSERT OR UPDATE OR DELETE OR MERGE ON table_name
BEGIN
…
END;
Account Trigger:Account Trigger是指针对某一指定帐号发生某些动作时触发,Account Trigger仅可用于会话模式,不能用于外部嗲DDL(数据定义语言)语句。Account Trigger由CONNECT、DISCONNECT、LOGON和LOGOFF等事件触发器组成,此外,可以根据特定的帐号名称设置帐号事件。例如下面的trigger:
```sqlCREATE OR REPLACE TRIGGER trigger_name
LOGON ON db_nameBEGIN
...END;
因此,Oracle数据库触发器的三种类型:Row Level Trigger、Statement Level Trigger和Account Trigger适用于不同的场景,能够满足各种不同的数据库自动处理需求,从而为程序开发者带来更少的工作量,更高的程序可维护性。