with do transaction, 나는 라벨을 정의했으며이 라벨에서 exclusive-lock.and 테이블에 액세스하고 있습니다. 라벨의 끝에는 해당 테이블의 모든 변경이 완료되었습니다. BT는 이제 거래 블록에 있습니다. 이제 다른 세션에서 동일한 테이블에 액세스하려고 시도했습니다. 그러면 다른 사용자가 사용하는 테이블 오류가 표시됩니다. 그래서 우리는 거래에서 테이블을 공개 할 수있게되어 다른 사용자가 액세스 할 수 있습니다. 예를 들어거래 및 잠금 문제
:
세션 1)
DO TRANSACTION:
---
---
loopb:
REPEAT:
--
--
---------------------> control is here right now.
END. /*repeat*/
--
--
END. /*do transaction*/
세션 2)
제가 동일한 테이블을 액세스하려고 시도하지만, 오류 표시, 다른 잠근 그 테이블 사용자.
감사합니다. 아베이지만 세션 1의 세션 2에서 동일한 레코드를 업데이트하고 싶습니다.하지만 트랜잭션 크기를 줄이거 나 할 수 없습니다. 왜냐하면 트랜잭션이 anothe 조건에 영향을 줄 수 있기 때문입니다. 두 번째 세션에서 내 기록. – jay
Jay, 두 번째 세션에서 레코드를 업데이트하려면 레코드에 EXCLUSIVE-LOCK이 필요합니다.이 레코드는 첫 번째 세션에서 보유 중이며 TRANSACTION이 끝날 때까지 해제되지 않습니다. 당신이하려는 일을 성취 할 수있는 유일한 방법은 1) 내 대답에 언급 된대로 TRANSACTION 범위를 좁히거나 2) 세션 1에서 레코드 잠금 코드를 취하여 외부 세션에서 업데이트를 수행하는 것입니다. 상태없는 AppServer 호출을 사용합니다. –
아베, 트랜잭션 범위 bcz를 좁힐 수 있습니다. 많은 변경이 필요합니다. 나는 두 번째 옵션이 좋다라고 생각합니다.이 두 번째 시도 할 것입니다.하지만 두 번째 세션 레코드를 업데이트하기 위해 외부 프로 시저 (AppServer 호출 없음)를 사용하려고했습니다. 테이블은 잠겨 있습니다. – jay