나는 다음과 같은 말한다 오라클 데이터베이스에 대한 제약 조건을 만들려고 해요 : 다음 column2
및 column3
의 조합은 모든 항목에 대해 고유해야합니다열 값에 따라 다중 열 제약 조건을 만들기
column1 == someValue
경우 column1 == someValue
고유 및 검사 제약 조건 개념을 잘 알고 있으며 이러한 제약 조건을 표현하려고 시도했습니다. 그러나, 나는 조건을 포함하는 방법을 찾을 수없는 것 같습니다. 그래서 그것이 가능한지 궁금해하는 이유입니다.
다음과 같은 클래스 계층 구조를 매핑 Hibernate에 의해 생성을 위해 내가 제약 조건을 만들려면 표 (간결 ommited 속성의 대부분) :
class MyClass {
String name;
MyClass parent;
}
class MySubClass extends MyClass {
String businessValue;
}
이 클래스는 하나의 테이블 전략을 사용하고 다른 사용하여 매핑된다 각 유형에 대한 판별 자 값. MySubClass
의 모든 인스턴스에 대해 name과 parent의 조합이 고유해야한다는 고객 요구 사항입니다 (column1은 판별 자 값입니다). 테이블 제약 조건을 통해 부모 클래스에 이러한 제약 조건을 적용하기는 쉽습니다. 그러나 해당 제약 조건은 MySubClass
에만 적용되어야합니다.
Hibernate Validator와 같은 프레임 워크를 사용하여 데이터베이스에 데이터를 입력하기 전에 데이터의 유효성을 검사 할 수 있습니다. 그러나 유효성 검사에는 데이터베이스 액세스가 필요하기 때문에 데이터베이스 제약 조건은 성능을 향상시키는 방법으로 보입니다.
create unique index mytable_idx on mytable
(case when column1 = 'somevalue' then column2 end
, case when column1 = 'somevalue' then column3 end
);
에만, 컬럼의 = 'someValue와'와 행에 대한 고유 인덱스 항목을 작성, :
ORM 개발자가 데이터베이스 제약 조건을 사용하면 얻을 수있는 이점에 대해 매우 기쁘게 생각합니다. –