웹에서 회원등록 할 때 회원 아이디만 키값이라고 하면 회원 가입페이지에서 중복체크를 하더라도 저장을 누르는 순간에 DB에 insert되는 시스템이 있습니다. (예시입니다)
이런 시스템을 사용하는 두 명의 사용자가 있는데, 굉장히 낮은 확률이겠지만 두 명이 같은 아이디를 입력하고 '저장' 버튼을 동시에 누르면 무결성 오류가 날텐데 이런 경우는 어떻게 처리하면 좋을까요?
PK 설정을 했다면? 1명은 성공하고, 한명은 실패하겠지요.
실패한 사람은 중복 메세지 띄우면 됩니다.
이해를 돕기 위한 예시일 뿐입니다. 더 복잡한 상황인데, 단순화 시켜서 다음과 같이 표현했습니다.
만약에 회원 아이디가 100으로 입력했는데 동시에 입력해서 한 명은 성공하고 다른 한명도 시스템으로 101로 처리해줘야 한다면, 이렇게도 가능한가요??(자바 언어)
pk설정이 곤란하다면 unique index ..
일단 반드시 PK로 해야하긴 하고, 둘이 동시에 저장할 경우에 저장 실패한 다른 한 사람의 값을 1 올려주면서 저장하도록 하는 방법을 고려 하려고 합니다. 방법이 없을까요?
아이디만 키값으로 예시를 하셨는데..자신이 정한 아이디가 아닌 중복이 나서 +1한 아이디로 저장되게 하면 그게 더 이상하지 않을까요?
정확히 말씀드리겠습니다. 회원 가입을 할 때 이 회원을 관리하는 키값이 회원 아이디가 아니라 다른 등록번호인데, 등록번호의 경우는 회원 본인은 모릅니다.
다른 더 복잡한 상황이 있는데 구구절절이 쓰기가 어려워서 상황을 단순화 시켜 말씀드렸습니다.
정확히 말씀드리면, 회원가입을 할 때 등록번호가 중복될 경우 문제가 될 수 있는데 이 등록번호를 자동으로 1 증가시키는 방법도 있을 수 있나 싶습니다.
예를 들어, 100명이 가입을 하면
등록번호가 원래는 시간 순차적으로 1,2,3,.... 증가하는데
100명이 동시에 가입을 한다면 자신은 회원체크도 이미 한 상황이기 때문에 등록번호 때문에 튕겨나가야 할 일은 없어야 할 것입니다.
그래서 자바에서 자동으로 이런 경우가 발생할 때 1씩 증가시키도록 가능한지 여쭙니다.
감사합니다 !!
처음 질문과 차이가 좀 있네요.
오라클경우는 sequence 기능이 있고
sql-server , my-sql 는 auto increment 같은 기능 사용하시면 됩니다.
그리고 회원 아이디가 변경가능하다는 조건이 있으면 회원등록번호(인조키)로 사용하는 경우가 있습니다.