我正在尝试将我们的数据库从 HSQLDB 1.7 升级到最新版本。不幸的是,有人将列命名为“默认”。我似乎无法在 SQL 中重命名此列(这在 1.7 中是因为必须在升级之前进行重命名)。
我试过转义列:
stmt.executeUpdate("ALTER TABLE table_name ALTER COLUMN \"DEFAULT\" RENAME TO new_name");
和各种变体(包括 '\"和 []),但似乎没有任何效果,我总是得到以下结果
java.sql.SQLException: Column not found: DEFAULT in statement [ALTER TABLE table_name ALTER COLUMN "DEFAULT"]
我显然遗漏了什么?
最佳答案
Unfortunately someone has named a column "Default"
问题似乎出在外壳上。双引号不仅可以“转义”您的名字,还可以使它们区分大小写,这与大多数数据库中不区分大小写的非引号名称不同。所以在重命名列时必须使用准确的大小写:
ALTER TABLE table_name ALTER COLUMN "Default" RENAME TO new_name
... 或使用 JDBC:
stmt.executeUpdate("ALTER TABLE table_name ALTER COLUMN \"Default\" RENAME TO new_name");
关于java - 当现有名称是保留字时,如何更改 HSQLDB 中的列名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29913477/