是否可以使用 JavaDB/Derby 以小写形式创建表和名称?要检查表是否存在,我正在使用:
ResultSet rs = dbmd.getTables(null, "APP", "user_properties", null);
if (!rs.next()) {/*do something*/};
但是表名'user_properties'必须在目录中匹配大小写。
Derby 遵循 ANSI 标准,该标准要求将不带引号的标识符折叠为大写。所以,下面的语句:
create table user_properties
(
id integer not null
);
将创建一个带有 then name 的表USER_PROPERTIES
和一个名为ID
.
您可以使用带引号的标识符强制 Derby 存储小写(或实际上混合大小写)名称:
create table "user_properties"
(
"id" integer not null
);
将创建一个带有 then name 的表user_properties
和一个名为id
.
当您使用带引号的标识符(又名“分隔标识符”)时,它们会区分大小写,因此必须始终使用双引号引用第二个表。
如果表是使用第二条语句创建的,则该语句select * from user_properties
将不起作用。你必须总是引用它:select * from "user_properties"
。
使用带引号的标识符通常会造成比其价值更多的麻烦。如果您从不引用您的标识符,您可以在调用中安全地使用大写名称getTables()