oracle数据库什么时候用语句级触发器,什么时候用行级触发器

1.
行级触发器对DML语句影响的每个行执行一次。
语句级触发器对每个DML语句执行一次,如果在TABLE表中插入的数据为500行,那么这个表上的语句级触发器只执行一次,而行级的触发器就要执行500次了。
2.
语句级别触发器
是在表上或者某些情况下的视图上执行的特定语句或者语句组上的触发器。能够与INSERT、UPDATE、DELETE或者组合上进行关联。但是无论使用什么样的组合,各个语句触发器都只会针对指定语句激活一次。比如,无论update多少行,也只会调用一次update语句触发器。
例子:需要对在表上进行DML操作的用户进行安全检查,看是否具有合适的特权。

create trigger tri_study

before insert or update or delete on zrp

begin

if user not in (‘DONNY’) then

Raise_application_error(-20001, ‘You can not access to modify this table.’);

end if;

end;
2、 行触发器

是指为受到影响的各个行激活的触发器,定义与语句触发器类似,有以下两个例外:

1、 定义语句中包含FOR EACH ROW子句

2、 在BEFORE……FOR EACH ROW触发器中,用户可以引用受到影响的行值。

定义:

create trigger tri_study

before insert or update

of department_id

on employees_copy

referencing old as old_value

new as new_value

for each row

when (new_value.department_id<>80 )

begin

:new_value.commission_pct :=0;

end;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值