在提交事务之前,SELECT在事务中进行的插入是否可见

时间:2010-04-09 10:26:07

标签: sql sql-server sql-server-2005 transactions

我需要确认。

客户端1在事务内的表中插入行。

客户端2使用SELECT请求此表。如果在此客户端隔离级别设置为READ COMMITTED,您是否可以确认SELECT不会返回客户端1尚未提交的行。

由于

3 个答案:

答案 0 :(得分:4)

这取决于事务隔离级别。 如果隔离级别确实是“已提交读”,则其他连接无法查看尚未提交的事务中另一个客户端已插入的行。

一些阅读:

答案 1 :(得分:1)

是的,你的陈述是正确的。 READ COMMITTED指定语句无法读取已修改但未由其他事务提交的数据。

答案 2 :(得分:1)

正确。

MSDN参考是here,(引用)说:

  

指定无法读取语句   已修改但未修改的数据   由其他交易承诺。这个   防止脏读。数据可以   由其他交易改变   个人陈述   当前交易,导致   不可重复的读取或幻像数据。   此选项是SQL Server的默认选项。

SELECT需要在READ UNCOMMITTED下运行,以便读取已被其他进程修改但尚未提交事务的数据。