I mysql er den eneste måde, jeg kan komme i tanke om, at tilføje et par hjælpekolonner som
CREATE TABLE tbl_challenger (
host int,
challenger int,
u0 int, u1 int
);
og tilføj et par triggere, der indstiller u0
og u1
til den mindste og største af de to:
CREATE TRIGGER uinsert BEFORE INSERT ON tbl_challenger
FOR EACH ROW SET NEW.u0 = LEAST(NEW.host,NEW.challenger),
NEW.u1 = GREATEST(NEW.host,NEW.challenger);
CREATE TRIGGER uupdate BEFORE UPDATE ON tbl_challenger
FOR EACH ROW SET NEW.u0 = LEAST(NEW.host,NEW.challenger),
NEW.u1 = GREATEST(NEW.host,NEW.challenger);
så tilføjer du et unikt indeks på (u0,u1)
CREATE UNIQUE INDEX uniqueness ON tbl_challenger(u0,u1);
Og nu får du en fejl, når du prøver at indsætte duplikatpar uanset rækkefølgen.
På en anstændig RDBMS som PostgreSQL
du ville være i stand til at bruge indeks på udtryk:
CREATE UNIQUE INDEX uniqueness ON tbl_challenger
( LEAST(host,challenger), GREATEST( host,challenger) );
Så skift, før det er for sent;-)