首页 > 解决方案 > SQL Server 2019 ProgrammingError:“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: /* Creating一个表 */ 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.') );] (此错误的背景:http://sqlalche.me/e/13/f405)

标签: sqlsql-serverauto-incrementcreate-table

解决方案


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

推荐阅读