2013-10-03 4 views
2

Можно ли создать таблицу и ее имя в нижнем регистре с помощью JavaDB/Derby? Чтобы проверить, существует ли таблица, я использую:Как создать таблицу в нижнем регистре - JavaDB/Derby?

Но имя таблицы 'user_properties' должно обрабатывать корпус в каталоге.

+0

Не можете ли вы создать таблицу table_name ....? – SpringLearner

+0

Если я делаю 'st.execute (« CREATE TABLE user_properties »);' в схеме APP 'записывается как «USER_PROPERTIES» - в верхнем регистре. Я хочу, чтобы это было в нижнем регистре. Это не очень большая проблема, просто спрашиваю, возможно ли это :) –

ответ

10

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".

Использование цитируемых идентификаторов обычно вызывает много больше проблем, чем того стоит. Если вы никогда не цитируете свои идентификаторы, вы можете безопасно использовать имя верхнего регистра в вызове getTables()

+0

Да, это сработало для меня. Синтаксис MySQL немного проще по сравнению с этой ситуацией, но это слишком дорого для коммерческого использования. Я думаю, что останусь с верхними и без кавычек. –

+0

@ErnestasGruodis: на самом деле, если вы запускаете MySQL в режиме ANSI, он ведет себя почти так же. –