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 будет сгенерированный. Если вам нужно удалить ограничение позже, вам нужно будет узнать автоматически сгенерированное имя.