commit概念请教(新手)
1.请问,我在PL/SQL中,SQL窗体中执行一条insert 语句到表T,后面没跟着commit,此时我查表T是有刚插入的记录的,此时是否真正的对表T数据进行了更新?
2.此时我关掉PL/SQL,重打开(就是想看数据是否真正更新),查询表T,也是有刚才插入的记录的(是否可认为刚才没有commit,但数据其实已提交?或者是先没又提交,但在哪个点最终自动提交了?),这其中ORACLE到底是如何处理这种事务机制的。
3.存储过程总执行SQL,是否不加commit,也是可以真正提交数据?和上面说的情况一样(某种自动提交机制?)?
3.总结,我SQL语句最后加不加commit,到底区别在哪?
[解决办法]
1.是真的插入了表T。
2.正常关闭客户端,会触发commit,非正常关闭客户端(kill 进程),会触发rollback。
3.不可以。
总结,事务的完整性直接影响到数据库性能。
宜短事务,不宜长事务。
[解决办法]
第一点的答案是不对的,如果你另外打开一个窗口,是看不到已提交的数据的。。
[解决办法]
存储过程中不加commit,那就得在调用过程的 外层加。。。
[解决办法]
1、没进行commit操作,实际数据是没更新的。
[解决办法]
2、估计是 oracle 你设置成自动 commit/提交啦!!!
[解决办法]
了解了,也就是说我在SQL窗口insert一条记录没有commit,相对于其他session,就可以认为没有插入表吧。
而我关掉PLSQL重打开,oracle是有个自动提交的机制。
存储过程中不commit,等于没改数据。。
第一点的答案是不对的,如果你另外打开一个窗口,是看不到没有提交的数据的。。
第一点的答案是不对的,如果你另外打开一个窗口,是看不到没有提交的数据的。。
是对的
建议你看看UNDO的相关资料