是否可以使用JDBC锁定SQL Server表上的单个行?
我正在使用jTDS驱动程序v1.2.7和SQL Server 2005。
尝试
UPDATE myTable SET timestamp=GETDATE() WHERE id='myid'
从SQL Server Management Studio 在行上正确获取锁。我可以在其他行上执行SELECT
和UPDATE
指令。
如果我尝试相同但使用JDBC,整个表都会被锁定。
感谢任何帮助
答案 0 :(得分:1)
查看会话的隔离级别。
select session_id,login_name,program_name,
date_format,quoted_identifier,arithabort,
ansi_null_dflt_on,ansi_defaults,ansi_warnings,
ansi_padding,ansi_nulls,concat_null_yields_null,
case transaction_isolation_level
when 0 then 'Unspecified'
when 1 then 'ReadUncomitted'
when 2 then 'ReadCommitted'
when 3 then 'Repeatable'
when 4 then 'Serializable'
when 5 then 'Snapshot'
end as transaction_isolation_level,
deadlock_priority
from sys.dm_exec_sessions
因为您使用的是READ COMMITTED,所以SELECT可能会被阻止。当您离开时,UPDATE将仅阻止该行。
最诚挚的问候。