In mysql kann ich mir nur vorstellen, ein paar Hilfsspalten wie
hinzuzufügenCREATE TABLE tbl_challenger (
host int,
challenger int,
u0 int, u1 int
);
und fügen Sie ein paar Trigger hinzu, die u0
setzen und u1
dem Geringsten und Größten der beiden:
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);
dann fügen Sie einen eindeutigen Index zu (u0,u1)
hinzu
CREATE UNIQUE INDEX uniqueness ON tbl_challenger(u0,u1);
Und jetzt erhalten Sie eine Fehlermeldung, wenn Sie versuchen, doppelte Paare einzufügen, unabhängig von der Reihenfolge.
Auf einem anständigen RDBMS wie PostgreSQL
Sie könnten den Index für den Ausdruck verwenden:
CREATE UNIQUE INDEX uniqueness ON tbl_challenger
( LEAST(host,challenger), GREATEST( host,challenger) );
Also, umsteigen, bevor es zu spät ist;-)