I mysql är det enda sättet jag kan tänka mig att lägga till ett par verktygskolumner som
CREATE TABLE tbl_challenger (
host int,
challenger int,
u0 int, u1 int
);
och lägg till ett par triggers som ställer in u0
och u1
till den minsta och största av de två:
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);
sedan lägger du till ett unikt index på (u0,u1)
CREATE UNIQUE INDEX uniqueness ON tbl_challenger(u0,u1);
Och nu får du ett felmeddelande när du försöker infoga dubblettpar oavsett beställning.
På ett anständigt RDBMS som PostgreSQL
du skulle kunna använda index på uttryck:
CREATE UNIQUE INDEX uniqueness ON tbl_challenger
( LEAST(host,challenger), GREATEST( host,challenger) );
Så byt innan det är för sent;-)