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) 
) 

什么是正确的语法?

+1

'AUTO_INCREMENT'是SQL Server'identity'的MySQL语法 – Andomar 2011-05-06 10:40:12

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

,应明确指出NAMENULLNOT 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 
) 

一些评论:

  1. 为标识列作为标识列指定not null不需要它不能为空。 ANSI_NULL_DFLT_ON选项不会影响标识列的'可空性'。
  2. 另一方面,为名称列指定'not null/null'很重要,因为它将受到ANSI_NULL_DFLT_ON值的影响。
  3. 明确指定约束名称总是一个好主意。因为如果你不这样做,会产生名称约束名称。如果您稍后需要删除约束,则必须查找自动生成的名称。