如何在不重命名 table 属性的情况下解决 SQL 名称冲突?

How to resolve SQL name conflict without renaming table attributes?

我正在尝试为我的最后一年项目创建一个 table(如下所示), 但是我遇到了 SQL 名称冲突错误。好像是'User'这句话 和 'role' 由 SQL 保留。有什么办法可以解决 问题,没有重命名的话。

CREATE TABLE User
(
    ID INT generated by default as identity PRIMARY KEY,
    username varchar(45) NOT NULL,
    password varchar(255) NOT NULL,
    role varchar(255) NOT NULL
);

在它们的名称(或您想要作为列名称的任何保留字)两边加上方括号。

[用户]

[角色]

在用户周围加上双引号。总的来说,引用你所有的标识符是没有坏处的。

如果您使用的是 SQL 服务器(在 MySql 中,可以使用 backticks `` 来尝试):

CREATE TABLE [User]
(
    ID INT generated by default as identity PRIMARY KEY,
    username varchar(45) NOT NULL,
    password varchar(255) NOT NULL,
    [role] varchar(255) NOT NULL
);

旁注:- 不建议对表名和列名使用保留关键字。

使用一些其他名称,例如 Users 和 Roles,这些名称不是保留关键字并且具有相似的命名方式。

编辑:

查看您的评论后,您似乎在使用 Derby。所以需要用双引号。

试试这个:

CREATE TABLE "User"
(
    ID INT generated by default as identity PRIMARY KEY,
    username varchar(45) NOT NULL,
    password varchar(255) NOT NULL,
    "role" varchar(255) NOT NULL
);