2011-10-09 6 views
6

Tengo una tabla que define la regla entre dos variantes:En Oracle, ¿cómo os anuncio una restricción única durante un par de valores y es par 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)); 

¿Cómo se crea una restricción que no permite " pares invertidos "? Con esto quiero decir que si hay un registro para las variantes 12 y 14, no se debe permitir un nuevo registro para el par invertido (14 y 12).

+0

No creo que directamente puede ... Hay varias opciones como el uso de un disparador para asegurar ese tipo de cosas (por ejemplo, mediante la inserción automáticamente el par invertido con algún marcador especial) ... – Yahia

Respuesta

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

Gracias, eso hizo el truco :-) –

Cuestiones relacionadas