Oracle触发器:从DML触发器到System触发器(oracle触发器类型)
Oracle触发器是一种对表上更新、插入或删除数据进行响应并执行指定操作的Oracle对象。它们可以配合约束完成执行特定任务,可以定义历史记录日志以及在表中添加实时验证,提高数据的完整性、安全性和一致性。
Oracle触发器可分为一下几类:DML触发器、System触发器、 Row触发器和Compound类型触发器等,其中DML触发器是最常使用的一种。
DML触发器
DML触发器是在数据库层执行DML指令时被触发;比如,当表中插入、更新或删除数据或执行其他某种操作时触发触发器。可以用以下语法创建DML触发器:
“`sql
CREATE OR REPLACE TRIGGER trigger_name
[BEFORE|AFTER]
[INSERT | UPDATE | DELETE]
ON table_name
[FOR EACH ROW]
[WHEN(condition)]
{
— action statement
}
System触发器:
System触发器是在DBA对数据库的系统模块执行某些操作时被触发,比如,当数据库被启动或关闭时,它就会被触发。可以用以下语法来创建一个System触发器:
```sqlCREATE OR REPLACE TRIGGER Trigger_name
[BEFORE|AFTER][Database|Servers]
{-- action statement
}
Row触发器:
Row触发器是在操作某表行记录时被触发,可以让其处理每个行被执行操作前后发生的动作,语法如下:
“`sql
CREATE OR REPLACE TRIGGER Trigger_name
[BEFORE|AFTER]
[INSERT | UPDATE | DELETE]
ON table_name
[FOR EACH ROW]
[WHEN(condition)]
{
— action statement
}
Compound类型触发器:
Compound类型触发器由多个子触发器组成,可以用来完成更复杂的任务,语法如下:
```sqlCREATE OR REPLACE TRIGGER Trigger_name
[COMPOUND]{
Trigger_1 Trigger_2
…… Trigger_n
}
总的来说,Oracle触发器可以大大提高数据完整性、安全性和一致性,也为实现自动数据库操作提供了有力的手段。Oracle触发器可以协助数据库管理员实现安全有效的数据库操作,使得数据库能够及时有效地应对可能出现的DML改变,从而减少数据库出现问题的可能性。