2013-02-26 2 views
0

JDBC를 사용하여 SQL Server 테이블에서 단일 행을 잠글 수 있습니까?SQL Server - JDBC를 통한 행 잠금

내가 잠금이 행에 올바르게 획득 SQL Server 관리 Studio에서

UPDATE myTable SET timestamp=GETDATE() WHERE id='myid' 

과 노력 jTDS를 드라이버 v1.2.7 및 SQL Server 2005

을 사용하고 있습니다. 다른 행에 SELECTUPDATE 명령어를 수행 할 수 있습니다.

동일하지만 JDBC를 사용하면 전체 테이블이 잠겨 있습니다.

도움이 되셨다면

+0

왜 전체 테이블이 잠겨 있다고 생각합니까? 이걸 확인해 봤어? – muhmud

+0

이것은 JDBC 나 jTDS와 관련이 거의 없습니다. 이는 SQL Server의 테이블 구성 결과 일 가능성이 큽니다. 예를 들어 [id]에 인덱스가없는 경우이 동일한 효과가 나타납니다. – RBarryYoung

+1

정확한 Java 코드를 게시하십시오. –

답변

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는 해당 행 하나만 차단합니다.

좋습니다.

+0

'ReadUncomitted '를 설정하면'SELECT' 명령으로 문제를 해결할 수 있습니다. 여전히 다른 행을 업데이트 할 수 없습니다. – Daniel