insert into table b select * from table a (nolock)
我在哪里放nolock
?以上是错误的列名'nolock'
我的要求是将表a
中的数据插入到表b
中,但我经常遇到死锁。
答案 0 :(得分:2)
假设这是针对SQL Server ...
更现代的写作方式是
insert into b
select *
from a with (readuncomitted)
使用它有很多风险和后果。值得考虑的是,在使用readuncommitted
时,表格a是否始终会提供一致的结果,NOLOCKS
的更新版本。
即使这样,您仍然可以看到死锁,具体取决于当时这些表中发生的其他情况。通过读取未提交的数据并在读取时不保留表a上的锁定,可以消除死锁的一个潜在原因。
有关详细信息,请参阅此问题: