2011-10-09 7 views
6

है मैं एक मेज है कि दो वेरिएंट के बीच शासन को परिभाषित करता है है:ओरेकल में, मैं कैसे मान की एक जोड़ी के दौरान किसी अद्वितीय बाधा की घोषणा करते हैं और इसे रिवर्स जोड़ी

CREATE TABLE VARIANTCOMBINATIONRULE 
(
    VARRECID0 NUMBER(10) NOT NULL, 
    VARRECID1 NUMBER(10) NOT NULL, 
    RULE  NUMBER 
); 

ALTER TABLE VARIANTCOMBINATIONRULE ADD (
    CONSTRAINT VARIANTCOMBINATIONRULE_PK 
    PRIMARY KEY 
    (VARRECID0, VARRECID1)); 

मैं एक बाधा है कि अनुमति नहीं देता है कैसे बना सकता हूँ " उलटा जोड़े "? इसके साथ मेरा मतलब है कि यदि संस्करण 12 और 14 के लिए एक रिकॉर्ड है, तो उल्टा जोड़ी (14 और 12) के लिए एक नया रिकॉर्ड की अनुमति नहीं दी जानी चाहिए।

+0

मुझे नहीं लगता कि यह है कि आप कर सकते हैं सीधे ... वहाँ एक ट्रिगर का उपयोग सुनिश्चित करने के लिए बात की इस प्रकार की (उदाहरण के लिए स्वचालित रूप से कुछ विशेष मार्कर के साथ उलट जोड़ी डालने से) जैसे कई विकल्प हैं ... – Yahia

उत्तर

7
CREATE UNIQUE INDEX unique_cd0_cd1 
     ON VARIANTCOMBINATIONRULE (least(VARRECID0, VARRECID1), greatest(VARRECID0, VARRECID1)); 
+0

धन्यवाद, वह दांव चल गया :-) –