0

考虑一下,我正在为所有在 12 点之前使用 sql*plus 与朋友注册的人提供彩票。没有用于存储时间戳的列,例如每行中的名称列表。一个人 m1 已经在 11:59 之前插入了他的票并提交了。

他在 11:59 开始更新他的(行)详细信息,将他的女仆添加到他的彩票列表中(只需提交)。另一个人 m2 运行 insert 语句在 11:59 开始他的第一次插入(只为他自己)(只需要提交)。它是一个有 2000 万行的巨大表。

现在12岁。将此视为已提交的读取隔离级别。

彩票批次开始,将注册用户移动到其他一些表。在那之后(很可能在下一纳秒),m1 和 m2 都提交。

我的选择语句是否会将 m1 与 m1 的女仆和 m2 添加到彩票中奖者列表中?

回答时考虑 scn(系统更改号)、幻像和不可重复读取。

4

1 回答 1

2

不会。只要您运行 SQL,Oracle 服务器就会为您的会话维护数据快照,因此,任何进一步的提交都不会在读取 SQL 中可见。

于 2014-05-15T13:35:39.883 回答