小编van*_*ani的帖子

为什么在更新语句中使用"with(rowlock)"时整个表被锁定

我使用WITH(ROWLOCK)更新表的一行,但通过执行"sp_lock",我可以看到整个表被锁定.因此,在提交事务之前,其他事务无法更新表的其他行.为什么"WITH(ROWLOCK)"没有生效?

我正在使用以下查询与rowlock:

DELETE FROM DefDatabaseSession  WITH (ROWLOCK) WHERE ProcessName='test';
Run Code Online (Sandbox Code Playgroud)

同时从同一个表中的差异行运行相同删除操作的任何其他事务中我得到异常

[SQLServer JDBC Driver] [SQLServer]超出锁定请求超时时间.嵌套异常是java.sql.SQLException:[newscale] [SQLServer JDBC Driver] [SQLServer]超出锁定请求超时时间:com.newscale.bfw.udkernel.kernel.UdKernelException:udconfig.defdbsession.delete; 未分类SQL的SQLException [DELETE FROM DefDatabaseSession WHERE ProcessName =?]; SQL状态[HY000]; 错误代码[1222]; [newscale] [SQLServer JDBC Driver] [SQLServer]超出锁定请求超时时间.嵌套异常是java.sql.SQLException:[newscale] [SQLServer JDBC Driver] [SQLServer]超出锁定请求超时时间.

t-sql database sql-server

6
推荐指数
1
解决办法
5556
查看次数

标签 统计

database ×1

sql-server ×1

t-sql ×1