如何以小写名称创建表 - JavaDB/Derby?

Ern*_*dis 2 java derby javadb

是否可以使用JavaDB/Derby以小写形式创建表及其名称?要检查表是否存在,我正在使用:

ResultSet rs = dbmd.getTables(null, "APP", "user_properties", null);
if (!rs.next()) {/*do something*/};
Run Code Online (Sandbox Code Playgroud)

但是表名'user_properties'必须在目录中加工.

a_h*_*ame 10

Derby遵循ANSI标准,该标准要求将不带引号的标识符折叠为大写.那么,以下声明:

create table user_properties
(
   id integer not null
);
Run Code Online (Sandbox Code Playgroud)

将创建一个具有名称USER_PROPERTIES和名为列的列的表ID.

您可以使用带引号的标识符强制Derby存储小写(或实际混合的)名称:

create table "user_properties"
(
   "id" integer not null
);
Run Code Online (Sandbox Code Playgroud)

将创建一个具有名称user_properties和名为列的列的表id.

当您使用带引号的标识符(也称为"分隔标识符")时,它们会区分大小写,因此必须始终使用双引号引用第二个表.

该声明select * from user_properties不会如果表是用第二条语句创建工作.你必须经常引用它:select * from "user_properties".

使用带引号的标识符通常造成很大的麻烦比它的价值.如果您从未引用过您的标识符,则可以安全地使用调用中的大写名称getTables()