IDENTITY 열이 하나만있는 테이블에 삽입하는 방법은 무엇입니까?


84

( 다른 질문에 답하는 과정에서이 질문에 답해보십시오. )

GroupTable이라는 다음 MS-SQL 테이블을 고려하십시오.

GroupID
-------
1  
2  
삼  

여기서 GroupID는 기본 키이고 ID 열입니다.

IDENTITY_INSERT ON 사용 하지 않고 테이블에 새 행을 삽입하고 새 ID를 생성하는 방법은 무엇입니까?

다음 사항에 유의하십시오.

INSERT INTO GroupTable() Values ()   

... 작동하지 않습니다.

편집 : 우리는 여기서 SQL 2005 또는 SQL 2008에 대해 이야기하고 있습니다.

답변:


126

이것은 작동합니다.

INSERT INTO GroupTable DEFAULT VALUES 

Visual Studio 2008 / SQL Express 2005에서이 기능을 사용할 수 없습니다. 아이디어가 있습니까? 동일한 테이블 레이아웃, 하나의 열, 기본 키, ID (1,1).
Thomas Sandberg

나도 SQL 2008 R2를 사용하고 있습니다.
TDaver 2011

SQL Server 2008 Express에서 저에게 적합합니다.
Adrian Lynch

3
@RomanPekar, SqlServer 2008 이상에서는 merge연산자 로 가능합니다 . 예merge into TableName using (values (1), (2), (3)) s(n) on 1=0 when not matched then insert default values;
i-one

17

여기 있습니다 :

INSERT INTO GroupTable DEFAULT VALUES

3

한 번에 두 개 이상의 행을 삽입 할 수 있습니다.

예를 들어 30 개의 행을 삽입합니다. GroupTable 기본 값에 삽입 이동 30

이렇게하면 매번 ID 열을 증가시켜 30 개의 행을 삽입합니다.


SQL 2008에 대해서는 확실하지 않지만 2008R2에서는 작동하지 않습니다 ( "GO '근처에 잘못된 구문"이라는 일반 오류가
표시됨

0

시퀀스 나 비슷한 것을 사용해 볼 수 있습니까? 시퀀스에서 선택하면 시퀀스의 다음 값을 제공합니다.


나는 그가 Oracle DB에 대해 이야기하고 있다고 생각합니다
codeulike

Oracle에 시퀀스가 ​​있다는 것을 알고 있으며 SQL Server에 비슷한 것이 무엇인지 (있는 경우) 확신하지 못했습니다. 그래서 "또는 비슷한"접미사를 붙인 다음 참조를 위해 시퀀스 정의를 제공했습니다.
Mike Pone

3
SQL Server 2012에는 SEQUENCE 가 있습니다.
Nick Chammas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.