SQL Server 2008 R2。 'AUTO_INCREMENT'附近的语法不正确

时间:2011-05-06 10:14:46

标签: sql sql-server tsql sql-server-2008

为什么会出现以下错误

Incorrect syntax near 'AUTO_INCREMENT'.

尝试执行时

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

    PRIMARY KEY (P_Id)
)

正确的语法是什么?

2 个答案:

答案 0 :(得分:14)

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

您应明确说明NAMENULL还是NOT NULL,因此您不依赖于current connection settings that happen to be in effect

答案 1 :(得分:0)

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. 另一方面,为Name列指定'not null / null'很重要,因为它会受ANSI_NULL_DFLT_ON值的影响。
  3. 明确指定约束的名称始终是个好主意。因为如果不这样做,将生成名称约束名称。如果以后需要删除约束,则必须找出自动生成的名称。