Database/ms-sql

[MS-SQL] 테이블 복사, SELECT(INSERT) INTO, IDENTITY_INSERT, DBCC CHECKIDENT, IDENTITY 컬럼에 INSERT방법

코딩for 2020. 11. 16. 10:33
반응형

 

테이블 전체 및 컬럼을 다른 테이블로 복사 INSERT 방법

 

SELECT INTO  
대상테이블을 신규로 생성을 한 후 INSERT 실행

SELECT 컬럼명 INTO 대상테이블 FROM 원본테이블 WHERE 조건식 

예) SELECT *  INTO TB_COLOR_TEMP FROM TB_COLOR WHERE AREA>1000

 

INSERT INTO  
원본테이블의 SELECT 데이터를 대상 테이블로 INSERT 실행

INSERT INTO 대상테이블 SELECT * FROM 원본테이블 WHERE 조건식

예) INSERT INTO TB_COLOR_TEMP SELECT * FROM TB_COLOR WHERE AREA>1000

 

 

IDENTITY 컬럼에 INSERT 방법

IDENTITY 자동증가 컬럼으로  INSERT 하려고 하면 오류가 발생을 하며 INSERT 가 되지 않는다. 

오류 메시지:  테이블 'TEST_TT'에 있는 ID 열의 명시적 값은 열 목록이 사용되고 IDENTITY_INSERT가 ON일 때만 지정할 수 있습니다.

 

IDENTITY 컬럼에 데이터를 INSERT 하기 위해서는 IDENTITY_INSERT 설정을 ON 로 하고 INSERT 를 해야한다. INSERT 가 완료한 후에는 다시 OFF 로 변경해준다.

  SET IDENTITY_INSERT TEST_TT ON; 
  INSERT INTO TEST_TT (IDX, VAL) VALUES(1, '1') 
  SET IDENTITY_INSERT TEST_TT Off;

 

* IDENTITY컬럼에 데이터 등록 후에는 SEED 값이 달라질수 있기 때문에 현재 SEED 값을 확인 후 필요시 변경해준다.

-- TEST_TT 테이블 현재 SEED 확인
DBCC CHECKIDENT (TEST_TT , NORESEED)

-- TEST_TT 테이블의 SEED 값을 100 으로 변경 (변경 후 INSERT 되는 값은 101이 된다.)
DBCC CHECKIDENT (TEST_TT , RESEED, 100)

 

 

반응형