2018년 6월 26일 화요일

[MSSQL] 시퀀스 사용하기


이슈(ISSUE)

간혹 datetime이나 int를 하나씩 늘리는 형태를 키로 사용하는 경우원격지에서 인서트를 동시에 한다던가 할 경우 다중스레드에서 인서트가 키 중복으로 안들어가는 경우가 있음.
에초에 이런식으로 개발하면 안되었음.
이런경우 고유 아이디를


테스트 환경(Test Environment): 

DB SERVER : MSSQL
TOOL : 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

이런 방식을 추천함

[LINUX] Yum : Error Nothing to do 해결

이슈(ISSUE)
리눅스에서
yum install ...
명령이
Yum : Error Nothing to do 메시지를 뱉을때가 있음.

테스트 환경(Test Environment): 
OS : Centos 7

해결(Solution): 
# cd /etc/yum.repos.d
# vi CentOS-Base.repo
   Enable =0 -> 1
# yum install epel-release