오라클을 사용하는 사람인데요, 업데이트 할때 순번을 자동으로 부여하려고 하는데,
유저가 둘 이상인 경우, 두군데에서 동시에 업데이트가 일어나면 동일한 번호를 업데이트 하게 됩니다. 테이블에서 번호의 맥스값을 가져와서 +1을 해주었거든요.. 그래서 sequence table을 만들고 거기서 값을 가져오는 방법을 사용하였더니.... 업데이트 하다가 에러가 났을 경우 롤백이 안됩니다. 그래서 에러난 레코드를 다시 정상적으로 업데이트를 하니 번호가 건너뜁니다... sequence table은 롤백이 안되나요? 그럼 이런 경우엔 어떤 방법을 써야 하지요????
이런 식으로 했습니다.
try
StartTransaction;
update aaa
set num = num_seq.NextVal <-- 여기서 sequence table의 Next 값을 가져옵니다.
where id = 어쩌고저쩌고..
update bbb
set abc = 'cba'
where id = 어쩌고저쩌고.. <-- 여기서 에러가 나면.. ㅜㅜ sequence table은 번호는 증가하고...
Commit;
except
Rollback; <-- 여기서 업데이트 문장은 롤백이 되고... ㅠㅠ
end;
고수님들, 조언 부탁합니다.....