SQL Server 2019 ProgrammingError: Incorrect syntax near 'AUTO_INCREMENT'

SQL Server 2019 ProgrammingError: Incorrect syntax near 'AUTO_INCREMENT'

我正在尝试找出出现此错误的原因以及解决方法。

代码:

CREATE TABLE sqlalchemy_generic_types 
(
    'No.' INT NOT NULL AUTO_INCREMENT,
    'Object Name' VARCHAR(25) NOT NULL,
    'Description' VARCHAR(100) NOT NULL,
    PRIMARY KEY('No.')
);

错误:

(pyodbc.ProgrammingError) ('42000', "[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Incorrect syntax near 'AUTO_INCREMENT'. (102) (SQLExecDirectW)") [SQL: /* Creating a table */ CREATE TABLE sqlalchemy_generic_types ( 'No.' INT NOT NULL AUTO_INCREMENT, 'Object Name' VARCHAR(25) NOT NULL, 'Description' VARCHAR(100) NOT NULL, PRIMARY KEY('No.') );] (Background on this error at: http://sqlalche.me/e/13/f405)

SQL服务器不支持自增。 SQL 服务器——或任何其他数据库——也不支持列名的单引号(据我所知)。

我建议将语句写成:

CREATE TABLE sqlalchemy_generic_types (
    sqlalchemy_generic_type_id INT IDENTITY(1, 1) PRIMARY KEY,
    ObjectName VARCHAR(25) NOT NULL,
    Description VARCHAR(100) NOT NULL
);

注意变化:

  • IDENTITY() 为 id 分配递增的值。
  • id一个有意义的名字。
  • ObjectName中删除了space,因此不需要对名称进行转义。
  • 不需要转义字符来定义 table。

如果列名包含特殊字符或空格,您需要提供 double quotes

Auto_increment? -- 你一定是在寻找 identity(1,1)

您可以使用以下查询:

CREATE TABLE sqlalchemy_generic_types (
    "No." INT NOT NULL identity(1,1),
    "Object Name" VARCHAR(25) NOT NULL,
    "Description" VARCHAR(100) NOT NULL,
    PRIMARY KEY("No.")
);

Db<>fiddle