SQL Server 2008 R2. Неправильный синтаксис рядом с 'AUTO INCREMENT'

почему я получаю следующую ошибку

Incorrect syntax near 'AUTO_INCREMENT'.

при попытке выполнить

CREATE TABLE Person
(
    P_Id int NOT NULL AUTO_INCREMENT,
    Name varchar(255),

    PRIMARY KEY (P_Id)
)

каков правильный синтаксис?

2 ответов


CREATE TABLE Person(
P_Id int NOT NULL IDENTITY(1,1) PRIMARY KEY,
Name varchar(255))

вы должны явно указать NAME is NULL или NOT NULL таким образом, вы не зависите от текущие настройки подключения, которые оказываются в силе.


create table Person
(
    PersonId int identity(1,1) 
        constraint PK_Person primary key,
    Name varchar(255) not null
)

некоторые комментарии:

  1. Не нужно указывать not null для столбца identity как столбца identity не может быть nullable. ANSI_NULL_DFLT_ON опция не влияет на "nullability" столбца идентификаторов.
  2. С другой стороны, важно указать "not null / null" для столбца Name, так как на него будет влиять ANSI_NULL_DFLT_ON значение.
  3. всегда полезно явно указывать имена ограничений. Потому что, если вы этого не сделаете, имя ограничения name будет сгенерированный. Если вам нужно удалить ограничение позже, вам нужно будет узнать автоматически сгенерированное имя.