是否可以使用 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
);
将创建一个名为 USER_PROPERTIES
的表和一个名为 ID
的列。
您可以使用带引号的标识符强制 Derby 存储小写(或实际上混合大小写)名称:
create table "user_properties"
(
"id" integer not null
);
将创建一个名为 user_properties
的表和一个名为 id
的列。
当您使用带引号的标识符(也称为“分隔标识符”)时,它们会区分大小写,因此第二个表必须始终使用双引号引用。
如果使用第二条语句创建表,则语句 select * from user_properties
将不起作用。您必须始终引用它:select * from "user_properties"
。
使用带引号的标识符通常会带来更多的麻烦,而不是其值(value)。如果您从不引用标识符,则可以在调用 getTables()
关于java - 如何以小写名称创建表 - JavaDB/Derby?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19156565/