sql >> Database teknologi >  >> RDS >> Mysql

Hvordan opretter man et 'tosidet' unikt indeks på to felter?

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.



  1. mysql eksekveringstid

  2. Slet række, hvis der findes en tabel SQL

  3. Mysql CASE NÅR JOIN Erklæring Fejl

  4. Er der en måde at installere java på Oracle 11g XE?