创建DML触发器

创建DML触发器

  create or replace trigger trigger_name

  before | after                                                    --指定触发器在出发时间之前还是之后触发

  insert on scott.table_name                               --指定触发事件,可以是insert,update,delete,也可是他们的组合,用or相连,

                                                                          如:insert or update or delete.如果使用update,还可以在其后指定列,如:update of ename,job

  [for each row]                                                  --指定行级触发,也即针对每一行的操作都会触发。如果不指定该选项则为语句级,即只触发一次,不论对多少行进行了操作

  [referencing new as new_name old as old_name]--修改伪记录new和old的名称

  [when (....)]                                                      --指定触发条件 

  [declare                                                           --指定声明部分

  [pragma autonomous_transaction]                     --指定自主事务

  ....]

  begin                                                              --可执行部分,至少一个可执行语句

  ....

  [exception                                                       --异常处理部分

  ...]

  end [trigger_name];

说明:1、关于when

           (1)when条件针对行级触发器

           (2)when后面的条件用括号()括起来,如果有多个条件可以用not,and,or相连,每个条件都必须在括号内。

           (3)如果在when条件中使用伪记录new或者old,不需要在其前使用:,也即之间使用new或者old

           (4)可以在条件中函数,但只能是oracle内置sql函数,不能使用户自定义函数,也不能是oracle内置包中的函数。

          2、关于伪记录

           (1)new和old两个伪记录都有rowid,且相同

           (2)可以修改new的字段值,但只能在before 行级触发器。不能修改old的字段值

           (3)不能把old和new作为记录参数传递

           (4)不能对new和old执行记录级别操作,只能针对其中的字段。

         3、关于操作指令

            (1)三个操作指令:inserting,updating,deleting

            (2)使用判断执行的操作为insert、update还是delete,他们的结果为boolen值。

            (3)如果是updating,其后可以加列,比如:if updating(column_name) then....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值