两张表A和B:
当更新表A后,从表A中选择符合条件的一些数据插入到表B中。
所以,我想在表A上见一个after update触发器。请教大家,这样的情况下用语句级触发器和行级触发器有什么区别?
谢谢!
当更新表A后,从表A中选择符合条件的一些数据插入到表B中。
所以,我想在表A上见一个after update触发器。请教大家,这样的情况下用语句级触发器和行级触发器有什么区别?
谢谢!
解决方案 »
- 请教Linux 6下安装Oracle 11g r1 错误的解决办法
- Oracle 创建对象类型失败
- 大家好,我想每天下午执行一次数据库更行,从一个表中导入到另一个表中,请问这个存储过程怎么写啊?
- 用VB对ORACLE编程,执行几十万条UPDATE,怎么才能让程序每100个UPDATE语句提交一次?
- 根据一个表的数据将另一个表的数据补全,求这样的一条SQL语句或存储过程
- oracle取随机记录的问题,在线等!!!!!!!!!
- 一个关于data字段的问题
- 请问用什么方法把数据库中的数据导出到文件里?
- 求帮忙优化,有关于存储过程使用游标
- oracle 11g安装不了,到选择桌面类时自动退出
- Oracle10 急救问题
- 求助:百万/千万条记录查询时间段的记录,如何能够提高效率?请指教
如你一条update A ...语句,如果该条语句更新了N条记录,则语句级触发器 触发(即执行)一次
行级触发器 触发N次
是在表上或者某些情况下的视图上执行的特定语句或者语句组上的触发器。能够与INSERT、UPDATE、DELETE或者组合上进行关联。但是无论使用什么样的组合,各个语句触发器都只会针对指定语句激活一次。比如,无论update多少行,也只会调用一次update语句触发器。
例子:需要对在表上进行DML操作的用户进行安全检查,看是否具有合适的特权。create trigger tri_study before insert or update or delete on zrpbegin 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;
语句级触发器对每个DML语句执行一次,如果在TABLE表中插入的数据为500行,那么这个表上的语句级触发器只执行一次,而行级的触发器就要执行500次了。
语句级触发器对每个DML语句执行一次,如果一条INSERT语句在TABLE表中插入500行,那么这个表上的语句级触发器只执行一次,而行级的触发器就要执行500次了。
如果语句级触发器,那么这个A表数据怎么来?:NEW不能用,只能A、B表关联操作?
如果行级触发器,那么直接用:NEW等附加条件判断直接insert或update到B表即可