SQL Server 2019 编程错误:“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]'AUTO_INCREMENT' 附近的语法不正确。(102) (sqlExecDirectW)") [sql: /* 创建表 */ 创建表 sqlalchemy_generic_types ( '不。' INT NOT NULL AUTO_INCREMENT,'对象名称' VARCHAR(25) NOT NULL,'描述' VARCHAR(100) NOT NULL,主键('编号') );] (此错误的背景:http://sqlalche.me/e/13/f405)

解决方法

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

我建议将声明写为:

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 中删除了空格,因此不需要对名称进行转义。
  • 定义表格不需要转义字符。
,

如果列名包含特殊字符或空格,您需要为列名提供 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