oracle 触发器与事务
2010-07-22 20:49
204 查看
(1)如果外部事务撤销,触发器形成的变更是否会撤销?如果触发器操作失败,是否会导致外部SQL失败,从而导致事务撤销
(2) 事务回滚时,触发器形成的变更是否会撤销;
(3) 触发器失败时,外部SQL是否会返回错误;如果会,则研究如何不返回错,如果不会,则研究如何会返回错误;
(4) 触发器失败时(插入两条记录,前者成功,后者失败),事务回滚时触发器形成的变更是否会撤销;
(5) 触发器失败时(插入两条记录,前者成功,后者失败),事务提交时触发器形成的变更是否会撤销;
答 在oracle中,对触发器的限制是:
1。触发器与触发该触发器的SQL语句同属于一个事务,触发器不允许发出任何事务控制语句,如commit、rollback、savepoint或者set transaction,它只能随着外部事务的提交、回滚而提交、回滚。(但在oracle8i 以及更高的版本中,你可以创建作为自治事务而执行的触发器,在这种情况下,触发器可以做提交或回滚操作,而与触发该触发器的外部SQL所在的事务无关)
2。与上面相同,在触发器内调用的所有过程、函数也都不能有事务控制语句,除非它们被声明为自治事务。
3。触发器内,不能声明LONG或LONG RAW变量,并且,:new和ld 也不可以指向触发器所为之定义的表的LONG或者LONG RAW类型的列。
4。在oracle8 及更高版本中,触发器内的代码可以引用和使用LOB类型的列、自定义对象类型的列,但不能修改这些列的值。
5。不允许访问变异表,关于变异表,参考oracle文档
(2) 事务回滚时,触发器形成的变更是否会撤销;
(3) 触发器失败时,外部SQL是否会返回错误;如果会,则研究如何不返回错,如果不会,则研究如何会返回错误;
(4) 触发器失败时(插入两条记录,前者成功,后者失败),事务回滚时触发器形成的变更是否会撤销;
(5) 触发器失败时(插入两条记录,前者成功,后者失败),事务提交时触发器形成的变更是否会撤销;
答 在oracle中,对触发器的限制是:
1。触发器与触发该触发器的SQL语句同属于一个事务,触发器不允许发出任何事务控制语句,如commit、rollback、savepoint或者set transaction,它只能随着外部事务的提交、回滚而提交、回滚。(但在oracle8i 以及更高的版本中,你可以创建作为自治事务而执行的触发器,在这种情况下,触发器可以做提交或回滚操作,而与触发该触发器的外部SQL所在的事务无关)
2。与上面相同,在触发器内调用的所有过程、函数也都不能有事务控制语句,除非它们被声明为自治事务。
3。触发器内,不能声明LONG或LONG RAW变量,并且,:new和ld 也不可以指向触发器所为之定义的表的LONG或者LONG RAW类型的列。
4。在oracle8 及更高版本中,触发器内的代码可以引用和使用LOB类型的列、自定义对象类型的列,但不能修改这些列的值。
5。不允许访问变异表,关于变异表,参考oracle文档
相关文章推荐
- Oracle 触发器 自治事务
- ORACLE 触发器对同一张表进行更新再查询时,需加自制事务
- SqlServer和Oracle中一些常用的sql语句8 触发器和事务
- oracle:触发器,自治事务,instead of trigger,trigger
- SqlServer和Oracle中一些常用的sql语句8 触发器和事务
- oracle中存储过程,存储函数,触发器,游标,索引,事务以及锁的概念,作用
- oracle 触发器与事务
- Oracle 通过触发器 来创建 同步临时表 及处理 通过 自治事务 来解决 查询 基表的问题
- Linux 环境下Oracle安装与调试(五)之事务、触发器
- Oracle使用手册(三)---存储过程与触发器
- oracle冒号问题联系触发器中new和old的冒号问题':'
- Oracle function 触发器 接上一篇
- SQL Server触发器及触发器中的事务学习
- oracle的触发器
- 【转】了解SQL Server触发器及触发器中的事务
- ORACLE PL/SQL编程之八:把触发器说透
- Oracle自治事务的介绍
- ORACLE之 触发器 TRIGGER
- SQL 视图 局部变量 全局变量 条件语句 事务 触发器
- 关于触发器一点问题(事务处理中)