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