SQL Server 2008 R2.Неверный синтаксис рядом с 'AUTO_INCREMENT' - PullRequest
9 голосов
/ 06 мая 2011

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

Incorrect syntax near 'AUTO_INCREMENT'.

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

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

    PRIMARY KEY (P_Id)
)

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

Ответы [ 2 ]

14 голосов
/ 06 мая 2011
CREATE TABLE Person(
P_Id int NOT NULL IDENTITY(1,1) PRIMARY KEY,
Name varchar(255))

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

0 голосов
/ 07 мая 2011
create table Person
(
    PersonId int identity(1,1) 
        constraint PK_Person primary key,
    Name varchar(255) not null
)

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

  1. Нет необходимости указывать not null для столбца идентификаторов, поскольку столбец идентификаторов не может быть обнуляемым.Параметр ANSI_NULL_DFLT_ON не влияет на «обнуляемость» столбца идентификаторов.
  2. С другой стороны, важно указать «не нуль / ноль» для столбца «Имя», так как на него будет влиять значение ANSI_NULL_DFLT_ON.
  3. Всегда полезно явно указывать имена для ограничений.Потому что, если вы этого не сделаете, имя ограничения имени будет сгенерировано.Если вам нужно удалить ограничение позже, вам нужно будет найти автоматически сгенерированное имя.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...