혹시 특정프로세스란게 테이블을 SQL Select명령으로 특정값을 가져온다던지하는 명령이라면... select for update를 이용하시면 될듯하구요. select해 오는 동안은 잠시 Lock이 걸리는걸로 기억합니다. 물론 Select가 끝나면 자동으로 Lock이 풀리구요...
그리고 아래분의 트랜잭션은 Lock의 의미와는 조금 다른듯하네요. 저도 안해본지 너무 오래되서...
여러개의 Data를 Insert, Update, Delete 등을 하다가 하나라도 실패할경우 트랜잭션 시작부터 실패한 명령을 모두 취소(Rollback)하고, 여러개의 명령이 성공할때는 모두 적용(Commit)하는것으로 기억하네요...
begin
with CustomerQuery do
begin
Database1.StartTransaction;
try
ApplyUpdates; {try to write the updates to the database};
Database1.Commit; {on success, commit the changes};
except
Database1.Rollback; {on failure, undo the changes};
raise; {raise the exception to prevent a call to CommitUpdates!}
end;
CommitUpdates; {on success, clear the cache}
end;
테스트 계획.
1. 업데이트문에 break point를 잡는다.
2. 프로그램을 Break Point까지 실행한다.(인서트문 1 실행)
3. sql plus 로 tb_sample를 select,insert,update 테스트.
4. 프로그램을 진행시켜 Commit이나 rollback을 실행
5. sql Plus로 tb_sample를 select,insert,update 테스트.
오라클 안쓰본지 너무 오래되서 기억이 가물가물하네요
혹시 특정프로세스란게 테이블을 SQL Select명령으로 특정값을 가져온다던지하는 명령이라면... select for update를 이용하시면 될듯하구요. select해 오는 동안은 잠시 Lock이 걸리는걸로 기억합니다. 물론 Select가 끝나면 자동으로 Lock이 풀리구요...
그리고 아래분의 트랜잭션은 Lock의 의미와는 조금 다른듯하네요. 저도 안해본지 너무 오래되서...
여러개의 Data를 Insert, Update, Delete 등을 하다가 하나라도 실패할경우 트랜잭션 시작부터 실패한 명령을 모두 취소(Rollback)하고, 여러개의 명령이 성공할때는 모두 적용(Commit)하는것으로 기억하네요...
허접답변이였습니다.