oracle 触发器
oracle触发器模板:
oracle触发器用于操作过一个表要对另一个表产生影响,这是可以用触发器;
Create Or Replace Trigger huiTrig
After Insert Or Delete Or Update On dept For Each Row
Begin
If Inserting Then
Insert Into emp Values (999,'insert', 0);
Elsif Updating Then
Insert Into emp Values (999,'update', 0);
Elsif Deleting Then
Insert Into emp Values (999,'delete', 0);
End If;
End;
Oracle触发器中的:new和:old的使用
1、 必须是行级触发器,因为:new或者:old是当前触发表操作的当前行的新数据或者旧数据,所以必须在行级触发器中才能使用。否则编译时会出现错误。
2、 当触发器被不同事件触发时,需要注意:
insert触发操作 只有 :new
delete触发操作 只有 :old
update触发操作 都有。
如果违反上述操作中随意使用:new或者:old不会在编译时报错误但是会发现使用这两个关键字无效。
3、 使用触发器时如果要修改:new的值需要注意:
只有行级前触发器才能修改:new的值,而行级后触发器不可以。
因为行级前触发器是在本行DML操作之前,所以才能修改:new的值。从逻辑上说,也只有在这时修改才有意义。如果行级后触发器要试图修改:new的值会报变异错误。从逻辑上说后触发器的执行已经在本行DML操作,以后了,再修改:new的值已经不会对数据产生影响了。
4、 当在触发条件中使用:new或者:old的时候注意,只能直接写 old或者new,不能带符号”:”否则会出错。