0

我在 Oracle 中遇到了一个奇怪的场景。一位客户正在尝试使用“选择更新”权限选项获取少量记录(行将被锁定直到事务完成)。在第一个客户端提交事务之前,另一个客户端也可以尝试访问具有只读权限的行。是否可以阻止被第一个客户端阻止的第二个客户端的行直到事务提交。请指导我。提前致谢。

4

1 回答 1

0

在 Oracle 中,读取器从不阻塞写入器,写入器从不阻塞读取器。因此,无论更新过程在做什么,另一个会话将始终能够读取行的当前提交状态。

如果要防止读取行,则需要编写一些额外的锁定逻辑。阅读器也可以SELECT ... FOR UPDATE使用或不使用 a WAIT,以便它会阻塞直到作者的事务提交。您还可以使用不同的表构建锁定逻辑。您可以构建一些逻辑,其中写入器更新不同表中的行,指示更新过程正在进行中,并且所有读取器进程都可以读取该行。

于 2013-08-13T13:21:46.007 回答