1.비관적 동시성 제어(Pessimistic Concurrency Control)
2.낙관적 동시성 제어 (Optimistic Concurrency Control)
h3.(1)비관적 동시성 제어
select 적립포인트I 방문횟수, 최근방문일시 I 구매실적 from 고객
where 고객변호 :cust num for update;
-- 새로운 적립포인트 계산
update 고객 set 적립포인트 적립포인트 where 고객변호 :cust num
for update nowait --> 대 기 없이 Exception(ORA-00054) 을 던짐
for update wait 3 --> 3초 대기 후 Exception(ORA-30006) 을 던짐
1. FOR UPDATE with no option
2. FOR UPDATE NOWAIT(= WAIT 0)
3. FOR UPDATE WAIT integer (0 ~ 4294967295, second)
4. FOR UPDATE OF
h3.(2) 낙관적 동시성 제어
select 적립포인트, 방문횟수, 최근방문일시, 구매실적 into :a , :b, :c , :d
from 고객
where 고객 변호 = :cust num;
-- 새로운 적립포인트 계산
update 고객 set
적립포인트 =: 적립포인트
where 고객번호 = :cust num
and 적립포인트 = :a
and 방문횟수 = :b
and 최근방문일시 = :c
ad 구매실적 = :d
if sql%rowcount 0 then
alert ('다른 사용자에 의해 변경되었습니다.');
end if;
- 강좌 URL : http://www.gurubee.net/lecture/3150
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.