2010-12-07 4 views
14

나는 무엇을 여기에서 놓치고 있냐? 메신저를 id 키를 기본 키로 사용하고 자동 증가를 사용하여 명시 적으로 삽입 할 필요가 없습니다.어떻게 기본 키 및 자동 인식 필드를 사용하여 SQL 임시 테이블을 만들 수 있습니까?

CREATE TABLE #tmp 
(
ID INT IDENTITY(1, 1) , 
AssignedTo NVARCHAR(100), 
AltBusinessSeverity NVARCHAR(100), 
DefectCount int 
); 

insert into #tmp 
select 'user','high',5 union all 
select 'user','med',4 


select * from #tmp 

내가이 말에 오류가 발생합니다 : 당신은 그냥 "기본 키를"단어를 누락

Insert Error: Column name or number of supplied values does not match table definition.

+0

삽입하지 않을 열을 지정하십시오. 나중에 감사 할 것입니다. – SQLMason

답변

34

까지 내가 지정한 목표를 달성하기 위해 볼 수 있습니다.

기타 열의 경우 NULL 또는 NOT NULL 중 하나인지 여부를 명시 적으로 정의하는 것이 가장 바람직하지만 ANSI_NULL_DFLT_ON 설정에 의존하지 않습니다.

CREATE TABLE #tmp 
(
ID INT IDENTITY(1, 1) primary key , 
AssignedTo NVARCHAR(100), 
AltBusinessSeverity NVARCHAR(100), 
DefectCount int 
); 

insert into #tmp 
select 'user','high',5 union all 
select 'user','med',4 


select * from #tmp 
+0

ID 열에 PK가 필요하지 않아야합니다. – Sam

+0

@Sam - 그는 PK로 원한다고 지정합니다. 어쨌든 필요하지 않아야하는 이유는 무엇입니까? 그는 독창적 인 제약 조건 집행과 PK로 정의 된 클러스터 된 인덱스를 원할 것입니다. –

+0

내가 dups 싶지 않아, 그래서 기본 키가 완벽하다고 생각. 나중에 잠시 사용하고 싶습니다. – kacalapy

9

신원 입력란에 입력하지 마십시오. 당신이 insert into... select field field field 는 해당 ID 필드에 첫 번째 필드를 삽입합니다 어떻게 사용하고

0

을 폭격한다면 당신은 단지 몇 가지를하고 있다면 당신은 값 절을

insert into #tmp (AssignedTo, field2, field3) values (value, value, value) 

를 필드 이름을 지정하고 사용할 필요가 빠르고 더러운 임시 작업을 수행하려면 명시 적 CREATE TABLE 문을 생략하고 SELECT ... INTO로 임시 테이블을 만들고 선택 목록에 ID 필드를 포함 시키십시오.

select IDENTITY(int, 1, 1) as ROW_ID, 
     Name 
into #tmp 
from (select 'Bob' as Name union all 
     select 'Susan' as Name union all 
     select 'Alice' as Name) some_data 

select * 
from #tmp 
관련 문제