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