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,不能带符号”:”否则会出错。
posted @ 2012-08-30 11:40  加勒比海盗船  阅读(173)  评论(0编辑  收藏  举报