Используя JPA / Oracle, я могу иметь уникальное ограничение, которое игнорирует строковый регистр? - PullRequest
0 голосов
/ 23 августа 2011

У меня есть таблица БД со столбцом, который является строкой. Я не считаю этот случай значимым (например, "TEST ==" test "). К сожалению, похоже, что JPA2 делает, потому что оба значения вставлены в мою таблицу; я бы хотел, чтобы второе было отклонено.

Есть ли общий способ аннотировать уникальное ограничение "case-ignore" для строкового столбца?

В качестве альтернативы я мог бы также рассмотреть возможность наложения уникального ограничения "игнорировать регистр" на фактический столбец БД. Возможно ли это в Oracle 10?

Что я не хочу делать, так это писать код, потому что это часто происходит в этой конкретной базе данных.

Вся помощь очень ценится.

1 Ответ

1 голос
/ 23 августа 2011

Вы можете достичь этого с помощью уникального индекса на основе функций

create unique index <index_name> on <table_name> (UPPER(<column_name>));

для примера

create table t111( col varchar2(10));
create unique index test_idx on t111 (UPPER(col));
insert into t111 values('test');
insert into t111 values ('TEST');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...