.net 数据库同步行为

.net 数据库同步行为,.net,database,vb.net,oracle,ado.net,.net,Database,Vb.net,Oracle,Ado.net,我有一个oracle数据库。我使用OracleDataAdapter(Oracle.DataAccess.dll)进行选择、更新、插入和删除操作。我自己不设置任何(表)锁(我只启动事务)。我有一个名为“test”的oracle表,其条目为“test1” 现在我的问题是: 当人员B同时更新/删除条目时,人员A能否读取条目“test1” 在最坏的情况下会发生什么?旧匹配/空匹配或是否会导致任何类型的异常/错误(例如“TableLocked异常”) 谢谢在Oracle中,读者不会阻止编写者。因此,一个

我有一个oracle数据库。我使用OracleDataAdapter(Oracle.DataAccess.dll)进行选择、更新、插入和删除操作。我自己不设置任何(表)锁(我只启动事务)。我有一个名为“test”的oracle表,其条目为“test1”

现在我的问题是:

当人员B同时更新/删除条目时,人员A能否读取条目“test1”

在最坏的情况下会发生什么?旧匹配/空匹配或是否会导致任何类型的异常/错误(例如“TableLocked异常”)


谢谢

在Oracle中,读者不会阻止编写者。因此,一个会话可以在另一个会话更新或删除该行的同时读取该行。读卡器将看到查询开始时系统变更号(SCN)处存在的行


只有当两个会话同时试图更新或删除同一行时,才会出现阻塞。这通常不会产生任何例外情况。相反,无论哪个会话在锁上等待,都会简单地阻塞,直到持有会话通过结束其事务释放锁为止。如果指定等待锁定的超时时间,或者Oracle检测到您的代码已死锁,并且必须终止其中一个死锁会话才能解决问题,则可能会出现异常。

在Oracle中,读卡器不会阻止写入程序。因此,一个会话可以在另一个会话更新或删除该行的同时读取该行。读卡器将看到查询开始时系统变更号(SCN)处存在的行

只有当两个会话同时试图更新或删除同一行时,才会出现阻塞。这通常不会产生任何例外情况。相反,无论哪个会话在锁上等待,都会简单地阻塞,直到持有会话通过结束其事务释放锁为止。如果指定等待锁定的超时时间,或者如果Oracle检测到您的代码已死锁并且必须终止其中一个死锁会话以解决问题,则可能会出现异常