V mysql mě napadá jediný způsob, jak přidat několik sloupců nástrojů jako
CREATE TABLE tbl_challenger (
host int,
challenger int,
u0 int, u1 int
);
a přidejte několik spouštěčů, které nastavují u0
a u1
na nejmenší a největší z těchto dvou:
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);
pak přidáte jedinečný index na (u0,u1)
CREATE UNIQUE INDEX uniqueness ON tbl_challenger(u0,u1);
A nyní se při pokusu o vložení duplicitního páru bez ohledu na pořadí zobrazí chyba.
Na slušném RDBMS jako PostgreSQL
budete moci použít index na výraz:
CREATE UNIQUE INDEX uniqueness ON tbl_challenger
( LEAST(host,challenger), GREATEST( host,challenger) );
Takže přepněte, než bude příliš pozdě;-)