sqlserver-一次updlock和withnolock和with check option 的报错原因分析

接口程序一直运行的很稳定,其中有一天进行了数据库的整改,导致程序不断报错,

报错信息如下

原因:

程序代码写入以下代码

select * from ViewName with(updlock) where XXX

而数据库的这个view代码如下

select * from tableName with(nolock) where XX

只要执行这个查询,就会导致以上错误,以上错误代码,一个需要加锁,一个不需要加锁,故报错了

故将数据库的view进行这样写

select * from tableName where XX with check option

就可以了,具体原因还在研究中

 

with(nolock)-代表不进行加锁

updlock- 代表更新锁,在执行这个查询后,它的值则被锁定,直到事务提交才可以进行更新

with check option -?