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
)
некоторые комментарии:
- Не нужно указывать 
not nullдля столбца identity как столбца identity не может быть nullable.ANSI_NULL_DFLT_ONопция не влияет на "nullability" столбца идентификаторов. - С другой стороны, важно указать "not null / null" для столбца Name, так как на него будет влиять 
ANSI_NULL_DFLT_ONзначение. - всегда полезно явно указывать имена ограничений. Потому что, если вы этого не сделаете, имя ограничения name будет сгенерированный. Если вам нужно удалить ограничение позже, вам нужно будет узнать автоматически сгенерированное имя.