본문 바로가기

identity

(4)
[SQL Server] IDENTITY 속성의 열은 고유할까? IDENTITY 속성은 초기값 및 증가값을 기반으로 생성된다. 그렇다면 IDENTITY 속성의 열은 고유할까? PRIMARY KEY 또는 UNIQUE 제약조건을 사용하여야 고유성은 보장된다. 위 제약조건을 설정하지 않고 중복된 데이터가 삽입되는지 확인해보자. -- 테이블 생성 CREATE TABLE TEST_IDENTITY ( COL1 INT IDENTITY (1,1) , COL2 INT ) GO -- 데이터 삽입 INSERT INTO TEST_IDENTITY (COL2) VALUES (1) INSERT INTO TEST_IDENTITY (COL2) VALUES (2) INSERT INTO TEST_IDENTITY (COL2) VALUES (3) INSERT INTO TEST_IDENTITY (COL2)..
[SQL Server] DBCC CHECKIDENT 를 사용한 IDENTITY 값 초기화 IDENTITY 컬럼의 시작 값을 초기화 해야할 때 DBCC CHECKIDENT 명령을 사용하여 초기화 할 수 있다. -- 현재 IDENTITY 값 확인 DBCC CHECKIDENT('IDENT_TABLE', NORESEED) DBCC CHECKIDNET('테이블명', NORESEED) 는 테이블의 현재 IDENTITY 값을 확인하는 명령어이다. -- IDENTITY 값 변경 DBCC CHECKIDENT('IDENT_TABLE', RESEED, 1000) DBCC CHECKIDENT('테이블명', RESEED, 초기화 값) 는 현재 값으로 사용할 새 값으로 초기화하는 명령어이다. 위의 경우 현재 값을 1000으로 초기화함으로써 새 값을 추가하면 1001이 삽입된다.
[SQL Server] 강제로 IDENTITY 값 입력하기 IDENTITY 속성을 테이블에 지정하면 자동으로 증가하는 값을 입력해준다. 자주 삭제되는 테이블에 ID 열이 있는 경우 ID 값 사이에 간격이 생길 수 있다. 기존 간격을 채우려면 SET IDENTITY_INSERT 를 ON으로 설정하고 명시적 값을 테이블의 ID 열에 삽입할 수 있다. CREATE TABLE TEST_TBL ( ID INT IDENTITY NOT NULL PRIMARY KEY , NAME VARCHAR(10) , AGE INT ) GO INSERT INTO TEST_TBL(NAME, AGE) VALUES ('한효주', 27), ('배수지', 20) , ('한지민', 32), ('구하라', 23) -- 데이터 확인 SELECT * FROM TEST_TBL -- 데이터 삭제 DELETE ..
[SQL Server] DELETE, TRUNCATE의 IDENTITY 초기화 여부 테이블의 구조는 남기고 모든 데이터를 지워야 할 경우 DELETE와 TRUNCATE를 사용할 수 있다. 이 때 테이블에 IDENTITY 속성이 있고 데이터는 지우되 다시 데이터를 입력할 때 이전에 사용하던 IDENTITY 값을 이어서 사용하고 싶으면 어떤 것을 사용해야할까? CREATE TABLE TEST_1 ( NUM INT IDENTITY (1,1) , NAME CHAR(6) ) GO CREATE TABLE TEST_2 ( NUM INT IDENTITY (1,1) , NAME CHAR(6) ) GO INSERT INTO TEST_1 VALUES ('아이유'), ('배수지'), ('강민경') INSERT INTO TEST_2 VALUES ('아이유'), ('배수지'), ('강민경') GO -- IDEN..