SQL Server 2008 R2。不正确的语法附近“AUTO_INCREMENT”
问题描述:
为什么我会收到以下错误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)
)
什么是正确的语法?
答
CREATE TABLE Person(
P_Id int NOT NULL IDENTITY(1,1) PRIMARY KEY,
Name varchar(255))
,应明确指出NAME
是NULL
或NOT NULL
所以你是不依赖于current connection settings that happen to be in effect。
+0
'AUTO_INCREMENT'有问题。用'IDENTITY(1,1)'代替它,它完美运作。谢谢! – 2015-08-03 14:02:44
答
create table Person
(
PersonId int identity(1,1)
constraint PK_Person primary key,
Name varchar(255) not null
)
一些评论:
- 为标识列作为标识列指定
not null
不需要它不能为空。ANSI_NULL_DFLT_ON
选项不会影响标识列的'可空性'。 - 另一方面,为名称列指定'not null/null'很重要,因为它将受到
ANSI_NULL_DFLT_ON
值的影响。 - 明确指定约束名称总是一个好主意。因为如果你不这样做,会产生名称约束名称。如果您稍后需要删除约束,则必须查找自动生成的名称。
'AUTO_INCREMENT'是SQL Server'identity'的MySQL语法 – Andomar 2011-05-06 10:40:12