Hvad med at kontrollere, hvad der kommer ind i tabellen, så du altid gemmer det mindste tal i den første kolonne og det største i den anden? Så længe det 'betyder' det samme selvfølgelig. Det er sandsynligvis billigere at gøre det, før det overhovedet kommer til databasen.
Hvis dette er umuligt, kan du gemme felterne, som de er, men få dem duplikeret i numerisk rækkefølge til to ANDRE felter, hvor du vil oprette den primære nøgle (pseudo-kode-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 )
Dette kunne nemt gøres med en trigger (som i Ronalds svar) eller håndteres højere oppe i applikationen.