아래와 같이 insert된 data가 있습니다.
순번, 완료일 문서번호 기관기호 이름
num, InDate PreNo HosNo Name
'20020113' '00001' '10080' '아무개'
'20020114' '00002' '10080' '아무도'
'20020113' '00003' '10080' '아무나'
'20020114' '00004' '10080' '아무리'
'20020114' '00005' '10080' '아무냐'
. . . . .
. . . . .
. . . . .
어떤 버튼을 누르면 다른 테이블들을 업데이트하면서 위의 테이블도 업데이트를 하는데요, 하면서 순번을 함께 업데이트해줘야 합니다. 그러니까 같은 완료일 중의 가장 큰값을 가져와서 +1을 해주면 되거든요.
그래서 아래처럼 해주었어요.
with Query1 do
begin
Close;
SQL.Clear;
SQL.Add('Update AAA ');
SQL.Add(' set num = (select nvl(max(num), ''000'') + 1 ');
SQL.Add(' from AAA ');
SQL.Add(' where Indate = ''20010113'') ');
SQL.Add(' where PreNo = ''00001'' ');
SQL.Add(' and HosNo = ''10080'' ');
ExecSQL;
end;
근데 이렇게 했더니 중복되는 번호가 생깁니다.... ㅜㅜ; C/S 환경으로 클라이언트가 7대이거든요... 같은 완료일 중에서는 같은 번호가 업데이트되는게 있음 안되는데 말이죠...
어떻게 해야하죠? 답변 부탁드립니다........... 흑흑,, 이거가지고 고생한지 한달도 넘었어요. 머리털 빠지겠어용............ ㅠㅜ
아시는 분 꼭 답변을 좀............ ! ㅠㅠ;
참!!! 데이타베이스는 오라클입니다..
FOR UPDATE 구문 사용하면 됩니다.