1.请问,我在PL/SQL中,SQL窗体中执行一条insert 语句到表T,后面没跟着commit,此时我查表T是有刚插入的记录的,此时是否真正的对表T数据进行了更新?2.此时我关掉PL/SQL,重打开(就是想看数据是否真正更新),查询表T,也是有刚才插入的记录的(是否可认为刚才没有commit,但数据其实已提交?或者是先没又提交,但在哪个点最终自动提交了?),这其中ORACLE到底是如何处理这种事务机制的。3.存储过程总执行SQL,是否不加commit,也是可以真正提交数据?和上面说的情况一样(某种自动提交机制?)?3.总结,我SQL语句最后加不加commit,到底区别在哪?
解决方案 »
- oracle 存储过程 open游标提示权限不足
- 急急!初学oracle!!---求救大侠们--这个sqlserver行列转换函数在oracle中怎么写!!!!!!!!!
- 求sql语句
- 关于主键的两个问题,谢谢
- 一个很基本的问题,怎么更改oracle数据库的字符集呀
- 如何程序(最好是c#)调用oracle数据库来实现取回第一行第一列数据(比如取表中某列最大值等等),其和Sql server有相同功能实现有何差别
- 客户端无法连接到服务器问题?
- 函数里把一个输入变量作为表名来查询为什么不行啊?
- 一个简单的问题,望大侠指点
- 极其基础的问题
- 一个oracle imp 导入出现如下的错误 超高分求解 ,请高手赐教!谢!!!
- Online Redo Log File不小心删除了,现在每次startup都ORA-03113: end-of-file on……
2.正常关闭客户端,会触发commit,非正常关闭客户端(kill 进程),会触发rollback。
3.不可以。
总结,事务的完整性直接影响到数据库性能。
宜短事务,不宜长事务。
第一点我没有说错,数据已经插入了表,但是其它的session是看不到的,至于为什么看不到,你们可以看UNDO相关资料。
这就是为什么commit小数据与commit大数据时间几乎相差无几的原因。
如果没有提交, 你在关闭窗口的时候一般有提示的。
而我关掉PLSQL重打开,oracle是有个自动提交的机制。
存储过程中不commit,等于没改数据。。
我在SQL窗口insert一条记录没有commit,相对于其他session,就可以认为没有插入表吧
--这个可以这么理解。我关掉PLSQL重打开,oracle是有个自动提交的机制。
--这个不是oracle有自动提交的机制,而是plsql developer设置为关闭窗口自动提交。可以在plsql developer中的菜单preferences--connection--logoff with open transaction中设置,默认为commit存储过程中不commit,等于没改数据。。--可以这么认为
建议你看看UNDO的相关资料
建议你看看UNDO的相关资料如果真正的插入了表T,为什么另外 的窗口看不到 没有commit的数据呢?