Co takhle kontrolovat, co jde do tabulky tak, abyste vždy ukládali nejmenší číslo do prvního sloupce a největší do druhého? Samozřejmě, pokud to ‚znamená‘ totéž. Pravděpodobně je levnější to udělat, než se to vůbec dostane do databáze.
Pokud to není možné, můžete pole uložit tak, jak jsou, ale nechat je duplikovat v číselném pořadí do dvou JINÝCH polí, na kterých byste vytvořili primární klíč (pseudokód-ish):
COLUMN A : 2
COLUMN B : 1
COLUMN A_PK : 1 ( if new.a < new.b then new.a else new.b )
COLUMN B_PK : 2 ( if new.b > new.a then new.b else new.a )
To by se dalo snadno provést pomocí spouště (jako v Ronaldově odpovědi) nebo se to dalo zvládnout výše v aplikaci.