比如说,有两个用户A,B同时操作数据库,A开始了一个事务,修改了某行,但还未提交,这个时候,B开始另一个事务,读取了该行,然后A回滚了事务,即修改被取消了,那么,B读取到的那一行数据就是脏数据上面这句话正确吗?如果事物A未提交,事物B能读到A所修改的数据吗?如何判断A,B 是否属于同一个事物?在PL/SQL 中先删一条数据(没有提交)紧接着在查刚才那条数据是查不到的,既然没有提交为什么会查不到呢?希望各位能详细回答一下,小弟不胜感激。
调试欢乐多
建议你多看看这方面的资料吧
A事务做了操作 没有提交 对B事务来说 就等于没做 获取的都是之前的数据
但是 在A事务中查询的话 查到的都是操作之后的数据
这个很好理解 你开两个sql窗口 在一个里边给一个表insert一条数据 不提交 紧接着select 有数据 但是去另一个sql窗口select 就没有数据
A:当然看不到Q:如何判断A,B 是否属于同一个事物?
A:这个应该不用判断吧,两次连接 就是属于两个“事物”Q:在PL/SQL 中先删一条数据(没有提交)紧接着在查刚才那条数据是查不到的,既然没有提交为什么会查不到呢?
A:因为这个是一个“事物”中,例如你在plsql developer中开启另一个窗口,就可以查到了。
而oracle只支持read committed和read serialization两种,所以不会出现你说的情况.