2010-07-06 4 views
1

임시 테이블에서 열을 삽입하고 ID 열을 순차적으로 증가 시키려고합니다. 다음 코드를 사용하고 있는데 아무 것도 삽입되지 않습니다.ID 열이있는 테이블에 삽입

INSERT INTO TestDataTable 
SELECT Code, Description, ParentID FROM TempTable 

어떻게 작동시킬 수 있는지 알려주십시오.

+0

'TestDataTable'의 스키마는 무엇입니까? – Jon

답변

1

ID를 IDENTITY column으로 만들어야합니다. 따라서 select into 문에서 다음과 같이해야합니다.

INSERT INTO TestDataTable 
SELECT ID = IDENTITY(INT,1,1), Code, Description, ParentID FROM TempTable 
1

두 가지 옵션이 있습니다. 첫 번째는 목표 테이블의 데이터 정의 언어에서이를 처리하는 것입니다. MS SQL Server 용으로 작성된이 코드 예제를 참조하십시오. 당신은 당신이 당신이 비어있을 것이다 알고있는 경우이 같은 테이블에가는 길에 지정 될 필요 달성 할 수있는 목표 테이블의 DDL에 처리 할 수 ​​없습니다 경우

CREATE TABLE #A ( 
    Id INT NOT NULL IDENTITY(1,1) PRIMARY KEY 
, Code VARCHAR(10) NOT NULL) 

CREATE TABLE #B (
    Code VARCHAR(10) NOT NULL) 

INSERT INTO #B VALUES ('alpha') 
INSERT INTO #B VALUES ('beta') 
INSERT INTO #B VALUES ('gamma') 
INSERT INTO #B VALUES ('delta') 

INSERT INTO #A (Code) 
SELECT Code 
FROM #B 

SELECT * 
FROM #A 

DROP TABLE #A 
DROP TABLE #B 

.

CREATE TABLE #A (
    Id INT NOT NULL PRIMARY KEY 
, Code VARCHAR(10) NOT NULL) 

CREATE TABLE #B (
    Code VARCHAR(10) NOT NULL) 

INSERT INTO #B VALUES ('alpha') 
INSERT INTO #B VALUES ('beta') 
INSERT INTO #B VALUES ('gamma') 
INSERT INTO #B VALUES ('delta') 

INSERT INTO #A (Id, Code) 
SELECT ROW_NUMBER() OVER (ORDER BY Code), Code 
FROM #B 

SELECT * 
FROM #A 

DROP TABLE #A 
DROP TABLE #B 

나는 첫 번째 방법을 권장합니다. 훨씬 간단하며 코드에서 자동 증가를 처리하는 것에 대해 걱정할 필요가 없습니다.

관련 문제