更新SQL中Cursor选择的行

时间:2009-06-19 08:00:21

标签: sql oracle

在oracle中,如果我定义一个游标,并且在同一时间如果表上有更新,那么我的Cursor会发生什么?它是否无效或更新无关紧要?

1 个答案:

答案 0 :(得分:4)

Oracle中的每个查询都与某个时间点(通常是查询的开头)一致。

在您的情况下,如果您打开游标并在获取游标时有人修改行,Oracle将重建数据的逻辑副本,就像打开游标时一样。在这个时间点之后,您将看不到对数据的修改。

这种读取一致性是Oracle引擎的基本组成部分。

Concept Guide开始,读取一致性:

  • 保证语句看到的数据集与单个时间点一致,并且在语句执行期间不会发生变化(语句级读取一致性)
  • 确保数据库数据的读者不会等待相同数据的作者或其他读者
  • 确保数据库数据的编写者不会等待相同数据的读者
  • 确保编写者只有在尝试更新并发事务中的相同行时才等待其他编写者