-3
insert into table b select * from table a (nolock)  

我在哪里放nolock?以上给出了一个错误,因为列名无效'nolock'

我的要求是将数据从一个表插入到另一个表ab但我经常遇到死锁。

4

1 回答 1

2

假设这是针对 SQL Server ...

一种更现代的编写方式是

insert into b 
   select * 
   from a with (readuncomitted)

使用它有很多风险和后果。readuncommitted值得考虑的是,表 a 在使用NOLOCKS.

即使这样,您仍然可以看到死锁,具体取决于当时这些表还发生了什么。您可以通过读取未提交的数据并且在读取时不对表 a 持有任何锁来消除死锁的一个潜在原因。

有关详细信息,请参阅此问题:

nolock (SQL Server) 提示是不好的做法吗?

于 2012-04-28T10:15:26.360 回答