SQL Server建表语法错误求助:疑似IDENTITY关键字冲突问题
问题排查与解决
你的判断完全正确,identity是SQL Server的保留关键字,直接作为表名使用会触发语法错误。除此之外,你的SQL语句里还存在两个SQL Server不支持的数据类型,一并修正如下:
修正后的完整建表语句
CREATE TABLE [identity] ( empid VARCHAR(255) PRIMARY KEY, entry VARCHAR(255) ); -- Table: vectors CREATE TABLE vectors ( f_id INTEGER PRIMARY KEY IDENTITY(1,1), label VARCHAR(255) NOT NULL, empid VARCHAR(255) REFERENCES [identity] (empid) NOT NULL, vector VARBINARY(MAX) NOT NULL );
关键修改点说明
- 关键字转义:用方括号
[identity]包裹表名,避免与SQL Server保留关键字冲突。你也可以使用双引号(需先执行SET QUOTED_IDENTIFIER ON;),但方括号是SQL Server通用的标识符转义方式。 - 数据类型修正:
- SQL Server不支持
STRING类型,替换为标准字符类型VARCHAR(255)(若需存储Unicode字符,可改用NVARCHAR(255))。 - SQL Server没有
BLOB类型,存储二进制大对象需使用VARBINARY(MAX)。
- SQL Server不支持
- 外键引用一致性:外键关联时,同样需要用
[identity]指定被引用表名。
内容的提问来源于stack exchange,提问作者Mr. Fractals
相关产品推荐
相关产品推荐

