我試圖創建一個Oracle數據庫的約束,上面寫着以下內容:創建多列約束,具體取決於列值
如果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開發者意識到使用數據庫約束的好處! – 2012-03-20 14:01:39