sql >> Database >  >> RDS >> Mysql

Hoe maak je een 'tweezijdige' unieke index op twee velden?

Hoe zit het met het regelen van wat er in de tabel komt, zodat u altijd het kleinste getal opslaat in de eerste kolom en het grootste in de tweede? Zolang het maar hetzelfde 'betekent' natuurlijk. Het is waarschijnlijk goedkoper om het te doen voordat het zelfs maar in de database komt.

Als dit niet mogelijk is, kunt u de velden opslaan zoals ze zijn, maar ze in numerieke volgorde laten dupliceren in twee ANDERE velden, waarop u de primaire sleutel (pseudo-code-achtig) zou maken:

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 )

Dit kan eenvoudig worden gedaan met een trigger (zoals in de reactie van Ronald) of hoger in de applicatie worden afgehandeld.



  1. willekeurige getallen in java

  2. SQL Server Collection Inventory Script -2

  3. Zoek n dichtstbijzijnde buren voor een bepaald punt met behulp van PostGIS?

  4. Prestatieverrassingen en veronderstellingen:STEL NOCOUNT IN OP