sql - 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)
解决方案
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
,因此不需要对名称进行转义。 - 定义表不需要转义字符。
推荐阅读
- c# - 如何使 TabControl.Itemtemplate (TextBlock) 占据全部可用宽度
- typescript - Typescript 中的函数参数和类型
- python - 如何查看“nt”中的所有功能?
- wpf - 用于 WPF 项目的 Visual Studio 2017 中的 HRESULT '8000000A'
- vue.js - Vuetify 从选择中创建变量
- amazon-redshift - 通过 Postgresql 连接器连接到 Azure Data Studio 中的 Amazon Redshift
- lua - Lua 中有没有办法在不使用 io.popen 的情况下列出目录?
- javascript - 在调用渲染函数之前,我可以在哪个 React 生命周期方法中使用 `this`
- typescript - TypeScript 记录类型如何产生索引类型?
- mysql - 删除级联时外键约束无效