2011-10-09 11 views
6

Ho una tabella che definisce la regola tra due varianti:In Oracle, Come dichiaro un vincolo univoco su una coppia di valori ed è paio inverso

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)); 

Come si crea un vincolo che non consente " coppie invertite "? Con questo intendo che se c'è un record per le varianti 12 e 14, non dovrebbe essere consentito un nuovo record per la coppia invertita (14 e 12).

+0

Non credo che si può direttamente ... Ci sono diverse opzioni come l'utilizzo di un trigger per assicurare che genere di cose (per esempio inserendo automaticamente la coppia invertita con qualche pennarello speciale) ... – Yahia

risposta

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

Grazie, questo ha fatto il trucco :-) –

Problemi correlati