Я пытаюсь создать ограничение для базы данных оракула, которое говорит следующее:
Если column1 == someValue
, то комбинация column2
и column3
должна быть уникальной для всех записей с column1 == someValue
Я знаком с понятиями уникальных и проверочных ограничений, и я попытался выразить ограничение с этими конструкциями.Тем не менее, я не могу найти способ включить условие.Вот почему мне интересно, возможно ли это вообще.
Таблица, для которой я хочу создать ограничение, создается Hibernate, отображая следующую иерархию классов (большинство атрибутов опущено для краткости):
class MyClass {
String name;
MyClass parent;
}
class MySubClass extends MyClass {
String businessValue;
}
Классы отображаются с использованием стратегии одной таблицы и с использованием различных значений дискриминатора для каждого типа.Это требование клиента, чтобы во всех случаях MySubClass
комбинация имени и родителя должна быть уникальной (column1 будет значением дискриминатора).Было бы легко применить такое ограничение к родительскому классу через ограничение таблицы.Однако это ограничение должно применяться только к MySubClass
.
. Существует возможность проверки данных перед их вводом в базу данных с помощью таких сред, как Hibernate Validator.Но поскольку для проверки в любом случае потребуется доступ к базе данных, ограничение базы данных представляется более экономичным способом сделать это.