oracle 触发器与事务
2014-05-23 21:28
197 查看
(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 触发器对同一张表进行更新再查询时,需加自制事务
- SqlServer和Oracle中一些常用的sql语句8 触发器和事务
- oracle 触发器与事务
- Linux 环境下Oracle安装与调试(五)之事务、触发器
- oracle:触发器,自治事务,instead of trigger,trigger
- SqlServer和Oracle中一些常用的sql语句8 触发器和事务
- Oracle 通过触发器 来创建 同步临时表 及处理 通过 自治事务 来解决 查询 基表的问题
- Oracle 触发器 自治事务
- oracle中存储过程,存储函数,触发器,游标,索引,事务以及锁的概念,作用
- 在 .NET 中使用 Oracle 数据库事务
- 触发器、游标、函数、存储过程、事务
- sql server与oracle的事务处理中关于DDL SQL的异同 (整理)
- 利用触发器和INSERT INTO ...SELECT...解决Oracle 数据匹配问题
- 在.net 2.0 中执行分布式事务:隐式事务篇(SQL Server 与 Oracle)
- 做个笔记:关于oracle,sybase,sql server的事务
- VB.NET使用OracleTransaction处理事务
- Oracle使用手册(三)---存储过程与触发器
- 触发器、存储过程和事务处理使用
- Oracle数据库事务处理和故障恢复
- ORACLE----触发器,存储过程及JOB