이슈(ISSUE)
간혹 datetime이나 int를 하나씩 늘리는 형태를 키로 사용하는 경우원격지에서 인서트를 동시에 한다던가 할 경우 다중스레드에서 인서트가 키 중복으로 안들어가는 경우가 있음.에초에 이런식으로 개발하면 안되었음.
이런경우 고유 아이디를
테스트 환경(Test Environment):
DB SERVER : MSSQLTOOL : SQL Server Management Studio
해결(Solution):
모든 명령은 SQL Server Management Studio에서 이루어짐시퀀스 만들기
[객체 탐색기]->[SQL Server]->[데이터베이스]->[데이터 베이스 선택]
->[프로그램 및 기능] -> [시퀀스] 에서 오른쪽 클릭 -> [새 시퀀스]
[시퀀스 이름] 및 [증가값] 최대 최소 값 적당히 설정
[순환]에 체크하면 최대값 이후에 최소값에서 다시 시작함
시퀀스 사용
테스트로SELECT NEXT VALUE FOR [시퀀스 이름]
을 반복해서 실행해봄
결과값에 입력한 증가값이 계속 더해져서 나옴.
사용
INSERT INTO [테이블] (N_ID) VALUE (SELECT NEXT VALUE FOR [시퀀스 이름])
이런식으로 시도하면 에러남.
INSERT INTO [테이블] (N_ID) VALUE (NEXT VALUE FOR [시퀀스 이름])
이런식으로 해야함.
자세한건 SQL 잘 몰라서 모름 그냥 SELECT 넣으면 에러!!
프로시져 만들때 만들어진 고유 아이디를 알아야할 할 경우가 있음
DECLARE @N_ID INT set @N_ORDER_ID = (NEXT VALUE FOR [시퀀스 이름])
INSERT INTO [테이블] (N_ID) VALUE (@N_ID)
SELECT @N_ID이런 방식을 추천함