当两个用户同时启动一个进程时,我在 oracle 10g 数据库中的查询出现问题。此查询正在插入另一个表中的卷数据。
我试图简化示例:
表结构:
表 1 VAL1 | VAL2
表2 ID | VAL1 | VAL2
询问:
插入Table2 (id, VAL1,VAL2)
select t2.id + rownum , t1.VAL1, t1.VAL2
from Table1 t1, (select max(id) as id from table2) t2
问题描述:
User1 启动进程,查询将插入 50000 条 id 从 1 到 50000 的记录
User2 同时启动进程,select max(id) as id from table2 不会返回预期值 50000,因为 user1 插入的行尚未提交,因此系统将尝试插入具有相同 Id 的行。
似乎 oracle 不允许像 sql server 或 DB2 这样的脏读,有没有办法允许从未提交的行读取?或另一种选择?