如题,
我开了两个Sql Window 窗口,
同一个查询语句:
select * from subject 居然得出两个不同的结果背景是这样的,查询之前以,我以Edit Data的方式打开了这个表subject ,然后改了某几条数据,提交后,再打开以上的两个窗口查询,一个查出来的是改之前的数据,一个查出来的是改之后的数据,请问这是什么原因,本人刚接触Oracle,感觉太多不懂了,与MS SQL Server相比,太多不方便了。
我开了两个Sql Window 窗口,
同一个查询语句:
select * from subject 居然得出两个不同的结果背景是这样的,查询之前以,我以Edit Data的方式打开了这个表subject ,然后改了某几条数据,提交后,再打开以上的两个窗口查询,一个查出来的是改之前的数据,一个查出来的是改之后的数据,请问这是什么原因,本人刚接触Oracle,感觉太多不懂了,与MS SQL Server相比,太多不方便了。
多个用户同时执行的事务称为并发事务,并发事务会出现数据不同步的问题。所以,第2个用户如果想看到正确的结果,第1个用户在操作完之后,必须commit。参考下面的示例来理解这个问题。
估计是楼主你所说的提交有问题,commit才能称为提交,你可以是可执行了update而没有执行commit,这种情况下其它连接是看不到你所做的修改的。
麻烦大家给我推荐一本吧。
Oracle Datebase 10g sql开发指南 清华大学出版社
不建议图形界面
SQL>commit;
才是事务提交。当数据获取了行级锁的时候,表数据行被当前用户所占据,期间其他会话都不能对表数据进行操作。如果进行操作,会处于等待的状态,有待当前用户commit后,释放行级锁。其他用户才能进行操作,查询正确的结果。当前用户进行操作当然是正确的结果,其他用户查询的是旧结果。所以导致数据不一致。