我使用WITH (ROWLOCK)更新表中的一行,但是通过执行"sp_lock",我可以看到整个表被锁定。因此,在事务提交之前,其他事务无法更新表中的其他行。为什么"With (ROWLOCK)"没有起作用?
我正在使用以下带有rowlock的查询:
DELETE FROM DefDatabaseSession WITH (ROWLOCK) WHERE ProcessName='test';
在同一张表中,同时从任何其他运行相同删除操作的事务中,我收到了异常。
[SQLServer JDBC Driver][SQLServer]锁请求超时。; 嵌套异常是java.sql.SQLException:[newscale] [SQLServer JDBC Driver] [SQLServer]锁请求超时。 :com.newscale.bfw.udkernel.kernel.UdKernelException:udconfig.defdbsession.delete; SQL [DELETE FROM DefDatabaseSession WHERE ProcessName =?]; SQL状态[HY000]; 错误代码[1222]; [newscale] [SQLServer JDBC Driver] [SQLServer]锁请求超时。; 嵌套异常是java.sql.SQLException:[newscale] [SQLServer JDBC Driver] [SQLServer]锁请求超时。