我已经看到sql语句使用nolock和with(nolock)
例如 –
例如 –
select * from table1 nolock where column1 > 10
和
select * from table1 with(nolock) where column1 > 10
以上哪些陈述是正确的,为什么?
解决方法
第一个声明不会锁定任何东西,而第二个声明不会锁定.当我刚刚在sql Server 2005中进行测试时,
select * from table1 nolock where column1 > 10
“nolock”成为table1的查询中的别名.
select * from table1 with(nolock) where column1 > 10
执行所需的nolock功能.持怀疑态度?在一个单独的窗口中运行
BEGIN TRANSACTION UPDATE tabl1 set SomeColumn = 'x' + SomeColumn
锁定表,然后在自己的窗口中尝试每个锁定语句.第一个将挂起,等待锁释放,第二个将立即运行(并显示“脏数据”).不要忘记发行
ROLLBACK
当你完成了