2011-10-09 23 views
6

Tôi có một bảng định nghĩa các quy tắc giữa hai phiên bản:Trong Oracle, làm thế nào để khai báo một hạn chế duy nhất trong một cặp giá trị VÀ nó cặp ngược

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

Làm thế nào để tạo ra một hạn chế không cho phép " cặp đảo ngược "? Với điều này tôi có nghĩa là nếu có một bản ghi cho các biến thể 12 và 14, một bản ghi mới cho cặp đảo ngược (14 và 12) không được phép.

+0

Tôi không nghĩ rằng bạn có thể trực tiếp ... có một số tùy chọn như sử dụng trình kích hoạt để đảm bảo điều đó (ví dụ bằng cách tự động chèn cặp đã đảo ngược với một số điểm đánh dấu đặc biệt) ... – Yahia

Trả lời

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

Cảm ơn, đã làm các trick :-) –

Các vấn đề liên quan