2010-03-07 5 views
1

나는 자동 증가 열이있는 테이블이 그런 식으로 삽입 할 수 :짧은 SQL 삽입 문? MySQL의에서

INSERT INTO tbl VALUES(null, "bla", "bla"); 

마이크로 소프트 SQL Server Express를 사용하여이 작업을 수행 할 수있는 방법이 있습니까를? 대신이의

:

INSERT INTO tbl(`v1`, `v2`) VALUES ("bla", "bla"); 

감사

+0

왜 INSERT 목록에서 열을 생략 하시겠습니까? 이렇게하면 나중에 테이블에 새 열 (null이 아닌 기본값 또는 null 가능)을 추가하는 것이 더 어려워집니다. 나는 이것에 대해서 이야기했다. (INSERT ... SELECT하지만 INSERT ... VALUES에 대해서도 마찬가지이다.) http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/10/bad-habits -kick-using-select-omitting-the-column-list.aspx –

답변

4

SQL Server에서는 identity 열에 값을 지정할 필요가 없습니다. (이것은 mysql의 null이 무엇인지 알 것입니다).

그래서, 당신의 테이블에 삽입하기위한 짧은 구문은 다음과 같습니다

Insert Into tbl Values('bla', 'bla') 

이 관계없이 열이 테이블의 기본 키 선언 여부에 작동하고 또한 컬럼의 위치를 ​​작동 테이블에. 즉 아래 그림과 같이 열이 중간에있는 경우에도입니다 :

Create Table tbl (
    [Col1] [varchar](50) NULL, 
    [Id] [int] IDENTITY(1,1) NOT NULL, 
    [Col2] [varchar](50) NULL 
) 

SQL 서버는 여전히 아주 행복하게 삽입 문을 해석하고 신원 삽입 처리됩니다.

다른 포스터에서 언급했듯이 SQL Server에서는 실제로 ID 열의 값을 지정하기 위해 Set Identity_Insert tbl On 명령을 실행해야합니다.

+0

고맙습니다. 그 간단한 생각은 아니 었습니다. :) – Adir

0

나는 당신이 당신의 삽입 문에서 식별 컬럼에 대한 참조를 포함하고 널 또는 일부 다른 마법 값을 전달할 수 있는지 여부를 묻는 생각 값 또는 선택 절. 아니 당신은 할 수 없습니다. SET IDENTITY_INSERT [table] ON을 사용하고 실제 값을 전달하지 않으면 ID 열의 값을 전달할 수 없습니다.

0

INSERT INTO tbl VALUES(null, 'bla', 'bla');

작품; 작은 따옴표를 사용하십시오. http://msdn.microsoft.com/en-us/library/ms174335.aspx

가입일

"값리스트의 값이 아닌 테이블의 열 같은 순서 이다 또는 표의 각 열에 값 없으면 column_list에 명시 적으로 각각의 들어오는 값을 저장하는 열을 지정하는 데 사용해야합니다. "