행에 select를 수행하고 값을 업데이트하려고합니다. 이 작업을 수행하는 동안 행에 독점적으로 액세스해야합니다. 즉, 다른 프로세스 (VM 내부 또는 외부)는 행을 업데이트 할 때까지 행을 읽을 수 있어야합니다. 현재 값은 "선택 가능"해서는 안됩니다. 다음 트랜잭션 주석을 시도했습니다.최대 절전 모드를 사용하는 Spring 트랜잭션을 사용하는 SQL Server 단독 행 잠금 (XLOCK ROWLOCK)
@Transactional(isolation = Isolation.SERIALIZABLE, readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Exception.class, timeout=960)
이 확실히 봄의 컨텍스트 내에서 작동하지만 거래의 중간에 잠 문을 넣는 동안, 난 여전히 데이터베이스 도구를 사용하여 현재 행의 값을 선택할 수 있어요.
봄/최대 절전 모드를 사용하여 XLOCK/ROWLOCK (적절한 방법)을 얻을 수있는 방법이 있습니까?
버전 :
- 봄 : 3.0.5.RELEASE
- 최대 절전 모드 : 3.6.3.Final
- JTDS : 1.2.4
내가 할 수없는 경우 Spring/Hibernate를 사용하면 JTDS 예제에 대한 링크가 크게 도움이 될 것입니다.
감사합니다.
다른 방법으로 데이터베이스 도구에서 "업데이트 용"접미사를 사용하여 select를 실행 한 다음 응용 프로그램에서 프로그램을 실행 해보십시오. 위 쿼리를 실행하기 전에 도구의 격리 수준을 확인해야 할 수도 있습니다. – r0ast3d
나는 그것을 시도 할 것이다. 변경하지 않고 필요한 잠금 장치를 이미 확보하고있을 수 있습니다. – JustinKSU
나는 분명히 무슨 일이 일어나고 있는지 말해야한다고 생각한다. 업데이트를 해주시기 바랍니다. – r0ast3d