`
xys_777
  • 浏览: 204182 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

[oracle] oracle触发器中的after和before有什么区别 , 语句级触发和行级触发有什么区别

 
阅读更多

after和before区别:
一个是在记录操作之前触发,一个是在记录操作之后触发。

比如表之间定义的有外键,在删除主键时,必须要先删除外键表,这时就有先后之分。

语句级触发和行级触发区别:

语句级别触发器只触发一次、行级触发器是作用了多少行触发多少次。
如果定义为语句级,则Delete from t执行时,触发器只运行一次,

如果定义为行级,则上面的Delete操作将使触器运行多次(有几条记录就运行几次)。

上面是 最简单的区别,当然还有其他的区别

触发顺序上有所区别
语句级别触发器before
行级别触发器before
行级别触发器after
语句级别触发器after
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->
[TEST@ora10gr1#2009-12-18/21:08:09] SQL>create or replace trigger t1_triger_before
2 before insert on t1
3 begin
4 dbms_output.put_line('语句级别触发器before');
5 end;
6 /

Trigger created.

[TEST@ora10gr1#2009-12-18/21:08:09] SQL>create or replace trigger t1_triger_after
2 after insert on t1
3 begin
4 dbms_output.put_line('语句级别触发器after');
5 end;
6 /

Trigger created.

[TEST@ora10gr1#2009-12-18/21:08:09] SQL>create or replace trigger t1_triger_before_each_row
2 before insert on t1 for each row
3 begin
4 dbms_output.put_line('行级别触发器before');
5 end;
6 /

Trigger created.

[TEST@ora10gr1#2009-12-18/21:08:09] SQL>create or replace trigger t1_triger_after_each_row
2 after insert on t1 for each row
3 begin
4 dbms_output.put_line('行级别触发器after');
5 end;
6 /

Trigger created.

[TEST@ora10gr1#2009-12-18/21:08:09] SQL>
[TEST@ora10gr1#2009-12-18/21:08:09] SQL>set serveroutput on
[TEST@ora10gr1#2009-12-18/21:08:09] SQL>--注意触发顺序
[TEST@ora10gr1#2009-12-18/21:08:09] SQL>insert into t1 values(1,'a');
语句级别触发器before
行级别触发器before
行级别触发器after
语句级别触发器after

1 row created.

[TEST@ora10gr1#2009-12-18/21:08:09] SQL>--注触发发次数
[TEST@ora10gr1#2009-12-18/21:08:09] SQL>insert into t1
2 select 1,'a' from dual union all
3 select 2,'b' from dual union all
4 select 3,'c' from dual;
语句级别触发器before
行级别触发器before
行级别触发器after
行级别触发器before
行级别触发器after
行级别触发器before
行级别触发器after
语句级别触发器after

3 rows created.

分享到:
评论

相关推荐

    Oracle触发器修改自身表

    1、行级触发器不支持 ...所以想要触发器对自身表数据做修该,则用行级触发器得到 :new 和 :old对象中的相关数据,然后将这样的数据保存到 package中,然后在语句级触发期中调用 package包中保存的数据,进行更新操作

    Oraclet中的触发器

    行触发器和语句触发器的区别表现在:行触发器要求当一个DML语句操走影响数据库中的多行数据时,对于其中的每个数据行,只要它们符合触发约束条件,均激活一次触发器;而语句触发器将整个语句操作作为触发事件,当它...

    行级触发器不能读.txt

    行级触发器不能读.txt

    详解oracle中通过触发器记录每个语句影响总行数

    详解oracle中通过触发器记录每个语句影响总行数 需求产生:  业务系统中,有一步“抽数”流程,就是把一些数据从其它服务器同步到本库的目标表。这个过程有可能 多人同时抽数,互相影响。有测试人员反应,原来抽过...

    oracle 触发器方式实现行ID自增加

    oracle 触发器方式实现行ID自增加介绍的很详细! 大家好好学习啊

    oracle触发器使用,很详细

    触发器使用教程和命名规范 1 1,触发器简介 1 2,触发器示例 2 3,触发器语法和功能 3 4,例一:行级触发器之一 4 5,例二:行级触发器之二 4 6,例三:INSTEAD OF触发器 6 7,例四:语句级触发器之一 8 8,...

    实验六-触发器实验报告.doc

    SQL DML 语句 ( INSERT、 DELETE 或 UPDATE) AFTER 指定了触发器在处理完成后触发 BEFORE 指定了触发器在处理完成前触发 默认情况下,触发器每个表触发一次 FOR EACH ROW 选项指定触发器每行触发一次(即触发器为...

    oracle 触发器

    在一个表上同时定义语句级触发器和行级触发器验证先触发那种触发器的验证sql代码

    Oracle触发器用法实例详解

    这里面需要说明一下,触发器可以分为语句级触发器和行级触发器。详细的介绍可以参考网上的资料,简单的说就是语句级的触发器可以在某些语句执行前或执行后被触发。而行级触发器则是在定义的了触发的表中的行数据改变...

    oracle触发器详解

    oracle触发器详解,对初步学习数据库的人有很大的帮助

    16.Oracle触发器1

    1、语句触发器DML操作(insert、delete、update),不管SQL语句影响的记录是多少行,触发器只触发一次 2、行级触发器DML操作(insert

    实验4答案-触发器.sql

    为LoanT表创建一个INSERT语句级触发器,当有新的贷款记录插入时,需要及时更新LoanNum表中该法人的贷款次数。 2、创建一个AFTER行级触发器,当对LoanT表的贷款金额(Lamount)进行修改时,若金额减少了10%,则将...

    Oracle行级锁的特殊用法简析

    在使用INSERT、UPDATE、DELETE 和SELECT…FOR UPDATE 等 语句时,Oracle会自动应用Oracle行级锁行级锁锁定。SELECT…FOR UPDATE 语句允许用户每次选择多行记录进行更新,这些记录会被锁定,且只能由发起查询的用户...

    实验二十五触发器

    网络数据库的触发器章节。又不太懂的同学可以下载下来研究下。

    oracle常见的锁查询和处理

    行级锁(TX锁) 表级锁(TM锁) 锁定相关视图 v$transaction v$lock 5 v$enqueue_lock v$session 检测并解决冲突 常见的锁查询和处理 当前系统中存在的锁争用: 引发争用的session信息: 引发争用的sql语句: 引发...

    数据中心行级和机柜级制冷架构有何优势

    房间级制冷系统无法满足新一代数据中心的冷却需求。最新一代的高负载密度和可变负载密度IT设备所产生的...本文将对比房间级、行级和机柜级制冷架构,并说明为何行级制冷架构将成为多数下一代数据中心的优选解决方案。

    trigger触发器trigger触发器trigger触发器

    --行级触发器 create or replace trigger insert_person after insert on person for each row begin insert into person2 values(:new.id,:new.name,:new.password); end; create or replace trigger update_...

    触发器的总结

    描述了如何创建触发器,包括触发器的组成,触发条件,触发时机。

    关于采用Oralce行级安全策略解决应用系统数据权限的论述

    我们在开发应用系统时,经常遇到这样的问题:用户只被允许访问某张表的一部分数据,而且无论使用哪个界面,都只能访问这一部分...本文旨在利用Oracle已有的行级安全策略,为有类似问题的项目组提供一种全新的解决方案

Global site tag (gtag.js) - Google Analytics