MSSQL 속성 중 IDENTITY(ID) 속성이 있습니다. IDENTITY(ID) 속성은 테이블의 특정 칼럼에 설정을 하면 새로운 레코드가 추가될 때 해당 칼럼에는 자동으로 연속적인 숫자, 즉 일련번호가 들어갑니다. 유일한 숫자를 만들어주므로 주로 Primery 키로 많이 사용됩니다.
IDENTITY(ID) 속성 구문
IDENTITY(ID) 속성의 구문은 다음과 같습니다.
IDENTITY(data_type, seed, increment)
- data_type : ID 열의 데이터 형식입니다. ID 열의 유효한 데이터 형식은 bit 데이터 형식을 제외한 정수 데이터 형식 범주의 모든 데이터 형식 또는 decimal 데이터 형식입니다.
- seed(초기값) : 테이블의 첫 번째 행에 할당되는 정수 값입니다. 후속행에는 각각 마지막 IDENTITY값에 증가값을 더한 것과 같은 다음 ID 값이 할당됩니다. 초기값 및 증가값을 지정하지 않는다면 기본값 1로 지정됩니다. 만약 seed를 2로 지정하면 초기값은 2로 시작됩니다.
- increment : 테이블의 연속된 행에 대해 초기값에 추가되는 정수 값입니다. 만약 2로 지정하게 되면 2씩 증가가 됩니다.
IDENTITY(ID) 속성을 사용할 때는 다음과 같은 사항을 고려해야 합니다.
- ID 속성은 하나의 테이블에서 하나의 칼럼에만 적용할 수 있습니다.
- 특정 테이블의 ID 칼럼 속성을 보려면 IENT_INCR(), IENT_SEED() 함수를 사용하면 됩니다.
IDENTITY(ID)속성 예제
CREATE TABLE TEST(
id INT IDENTITY(1,1),
name VARCHAR(20)
);
위의 쿼리는 테이블을 생성하는 쿼리이며, 위와 같이 IDENTITY(ID)를 지정하여 테이블을 생성해 주면 초기 id는 1부터 시작되며 1씩 증가됩니다.
생성한 후 디자인에 들어와 id를 확인해 주면 아래와 같이 설정이 되어있습니다.
ID 사양은 '예', 시드 1, 증가값 1로 잘 설정된 것을 확인할 수 있으며 NULL 허용은 체크 해제 되어있는 거 확인할 수 있습니다.
ID값이 순차적으로 증가하는지 아래와 같이 쿼리를 실행시켜 데이터를 넣어보려고 합니다.
INSERT INTO [IDENTITY_TEST] ([name]) VALUES ('홍길동')
INSERT INTO [IDENTITY_TEST] ([name]) VALUES ('김철수')
INSERT INTO [IDENTITY_TEST] ([name]) VALUES ('이정수')
INSERT INTO [IDENTITY_TEST] ([name]) VALUES ('박지성')
위의 쿼리를 실행시켜 주게 되면 순서대로 Insert 되기 때문에 ID값이 순서대로 1, 2, 3, 4로 들어가게 될 겁니다.
위의 쿼리 실행한 데이터 값입니다. insert 순서 데이터 대로 id 값이 증가한 것을 확인할 수 있습니다.
댓글