2008-09-17 5 views

답변

21

다른 사람이 말했듯이, 바로 신원 옵션을 설정

+0

이 질문에 대한 답변이 아닙니다. 자동 증가, 기본 키 문제를 모두 무시합니다.왜 똑딱 거리고 있니? –

2

필드를 identity field으로 설정하기 만하면됩니다. 이

create table foo 
( 
user_id int not null identity, 
name varchar(50) 
) 
0

정체성을 할 분야를 선언합니다.

1

위에서 언급 한 것처럼 IDENTITY 필드를 사용하십시오.

CREATE TABLE foo 
(
user_id int IDENTITY(1,1) NOT NULL, 
name varchar(50) 
) 
9

OP는 자동 증가 기본 키를 요청했습니다. IDENTITY 키워드는 그 자체로 열을 기본 키가 아닙니다.

CREATE TABLE user 
(
    TheKey int IDENTITY(1,1) PRIMARY KEY, 
    Name varchar(50) 
) 
+0

맞습니다. 왜 다른 하나가 정답으로 표시되어 있습니까? –

4

다른 사람이 언급했듯이 : IDENTITY 특성을 열에 추가하고이를 기본 키로 만듭니다.

이있다, 그러나, MSSQL의 IDENTITY와 MySQL의 AUTO_INCREMENT의 차이 :

  • MySQL은 (종종 기본 키의 형태로) 고유 제약이 AUTO_INCREMENT 컬럼에 대해 정의해야합니다.
    MSSQL에는 이러한 요구 사항이 없습니다.
  • MySQL을 사용하면 수동으로 값을 AUTO_INCREMENT 열에 삽입 할 수 있습니다.
    MSSQL을 사용하면 IDENTITY 열에 값을 수동으로 삽입 할 수 없습니다. 필요한 경우 삽입 전에 " IDENTITY_INSERT tablename ON" 명령을 실행하여 명령을 무시할 수 있습니다.
  • MySQL에서는 AUTO_INCREMENT 열의 값을 업데이트 할 수 있습니다.
    MSSQL은 IDENTITY 열의 값 업데이트를 거부합니다.
9

그들은 귀하의 질문에 답변을했지만 신원 열을 처음 사용하는 사람에게 조언을 조금 추가하고 싶습니다. 방금 삽입 한 ID의 값을 반환해야 관련 테이블에 삽입 할 수있는 경우가 있습니다. 많은 정보원에서이 값을 얻기 위해 @@ ID를 사용하도록 알려줄 것입니다. 어떤 상황에서도 데이터 무결성을 원할 경우 @@ identity를 사용해야합니다. 트리거 중 하나가 다른 테이블에 삽입되도록 추가 된 경우 트리거에 생성 된 ID를 제공합니다. @@ identity의 값이 항상 정확하다는 것을 보장 할 수 없기 때문에 결코 @@ identity를 사용하지 않는 것이 가장 좋습니다. 대신이 값을 가져 오려면 scope_identity()를 사용하십시오. 이 문제는 다소 논란의 여지가 있지만 SQL Server에서 ID를 사용하는 방법을 이해하는 것이 중요합니다. 그리고 저를 믿으십시오. 잘못된 신원 가치를 가진 관련 기록의 문제를 해결하기를 원하지 않았습니다. 이것은 치명적이기 전에 몇 달 동안 조용히 잘못 될 수 있으며 나중에 데이터를 고치는 것은 거의 불가능합니다.