oracle不需要显式的开始事务,事务会在修改数据的第一条语句处开始,但是oracle必须显示结束事务。这个和informix不一样,在informix数据库中,如果不显式声明事务的话,则每条修改的语句都是单独的事务,并马上自动提交。
这是两个数据库在锁和事务实现的机制不一样,在informix中锁是一种很重要的资源,所以事务最好尽快结束;而在oracle中锁的开销很小,甚至是“没有” 开销,所以oracle中系统认为事务应该可以很长。
如果忘记结束事务,不同的环境下会产生不同的缺省行为:如果正常地退出SQL*Plus会话,而没有提交或回滚事务,SQL*Plus就会认为你希望提交前面做的工作,并为你完成提交。另一方面,如果你只是退出一个Pro*C程序,就会发生一个隐式的回滚。
这是两个数据库在锁和事务实现的机制不一样,在informix中锁是一种很重要的资源,所以事务最好尽快结束;而在oracle中锁的开销很小,甚至是“没有” 开销,所以oracle中系统认为事务应该可以很长。
如果忘记结束事务,不同的环境下会产生不同的缺省行为:如果正常地退出SQL*Plus会话,而没有提交或回滚事务,SQL*Plus就会认为你希望提交前面做的工作,并为你完成提交。另一方面,如果你只是退出一个Pro*C程序,就会发生一个隐式的回滚。
本文探讨了Oracle与Informix两种数据库系统中事务处理的不同之处。Oracle在修改数据的第一条语句开始事务,但需显式结束;而Informix中每条修改语句都视为独立事务并自动提交。此外,还讨论了这两种数据库锁和事务机制的设计理念差异。
1977

被折叠的 条评论
为什么被折叠?



