팬션 객실이 20평 10개, 30평 10개가 있습니다.
예약은 1인이 객실 2개까지 예약할 수 있습니다. (동일 평수 중)
예약은 3주전 예약가능, 매일 오전 9:00 정각에 site가 open 되며, 선착순 예약입니다.
테이블은 객실마스타, 객실예약 으로 설계 하였습니다. (간편축소)
객실준비 (t_master)
m_date varchar2(8) 영업일자
m_type char(1) 객실type (1=20평, 2=30평)
m_roomno varchar2(4) 객실번호
m_bkid varchar2(20) 예약자회원번호
m_bkname varchar2(20) 예약자명
객실예약 (t_booking)
t_date varchar2(8) 예약일자
t_type char(1) 객실type
t_bkcnt number(1), 예약객실수
t_bkid varchar2(20) 예약자id
t_bkname varchar2(20) 예약자명
고객이 객실 예약을 하면 t_booking 테이블에 예약일자, 객실타입, 객실수를 insert를 합니다.
이때 09:00정각 예약site에 동시 로그인 회원이 500여명 가까이 경합이 되며,
예약은 몇초만에 끝이 납니다.
t_booking table에 insert하기전 잔여 객실수를 쿼리하여 예약테이블에 insert하는데도
잔여객실보다 많이 insert가 됩니다.
insert 쿼리문장 >>
select count(*) into :cnt from t_master where m_date = :p_date and m_bkid is null;
If cnt > 10 Then
messagebox('알림','예약이 완료되었습니다.!')
Else
insert into t_booking (:p_date, :p_bkcnt, :p_bkid, :p_bkname);
End if;
초과 예약을 방지하려면 어떤 로직을 추가 해야 될까요?
몇일 이것때문에 머리를 쥐어 뜯고 있습니다. ㅠ.ㅠ
도와주세요... plz ^^