我使用 WITH (ROWLOCK) 更新了表的一行,但是通过执行“sp_lock”,我可以看到整个表都被锁定了。所以,在事务提交之前,其他事务不能更新表的其他行。为什么“WITH(ROWLOCK)”不生效?
我将以下查询与行锁一起使用:
DELETE FROM DefDatabaseSession WITH (ROWLOCK) WHERE ProcessName='test';
在同一时间从对同一表中的不同行运行相同删除操作的任何其他事务中,我得到了异常
[SQLServer JDBC Driver][SQLServer]Lock request time out period exceeded.; 嵌套异常是 java.sql.SQLException: [newscale][SQLServer JDBC Driver][SQLServer]Lock request time out period exceeded.: com.newscale.bfw.udkernel.kernel.UdKernelException: udconfig.defdbsession.delete; SQL [DELETE FROM DefDatabaseSession WHERE ProcessName = ?] 的未分类 SQLException;SQL状态[HY000];错误代码[1222];[newscale][SQLServer JDBC Driver][SQLServer]Lock request time out period exceeded.; 嵌套异常是 java.sql.SQLException: [newscale][SQLServer JDBC Driver][SQLServer]Lock request time out period exceeded。