sql >> Databasteknik >  >> RDS >> Mysql

Hur skapar man ett "dubbelsidigt" unikt index på två fält?

Vad sägs om att kontrollera vad som ska in i tabellen så att du alltid lagrar det minsta numret i den första kolumnen och det största i den andra? Så länge det "betyder" samma sak förstås. Det är förmodligen billigare att göra det innan det ens kommer till databasen.

Om detta är omöjligt kan du spara fälten som de är men få dem duplicerade i numerisk ordning till två ANDRA fält, på vilka du skulle skapa primärnyckeln (pseudokod-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 )

Detta kan enkelt göras med en trigger (som i Ronalds svar) eller hanteras högre upp i applikationen.



  1. Sammanfoga en sträng och primärnyckel-ID vid infogning

  2. MariaDB JSON_ARRAY_INSERT() Förklarad

  3. Oracle DB citat kolumnnamn

  4. Vikten av varchar-längd i MySQL-tabellen