sql >> Database teknologi >  >> RDS >> PostgreSQL

Postgresql:Unik begrænsning over forening af 2 kolonner

Du kan bruge en ekskluderingsbegrænsning som kun kræver et enkelt indeks:

alter table transaction_links
  add constraint check_tx
  exclude using gist ( (array[send_id, receive_id]) with &&);

&& operator er "overlaps"-operatoren for arrays - hvilket betyder "har elementer til fælles, uanset rækkefølgen af ​​elementerne i arrayet. I dette tilfælde forhindrer begrænsningen at indsætte en række, hvor en hvilken som helst værdi af (send_id, receive_id) vises i en anden række i tabellen (uanset kolonnen).

Du har dog brug for intarray udvidelse til det.

Online eksempel:https://rextester.com/QOYS23482




  1. Hvordan returnerer man en almindelig værdi fra en Knex / Postgresql-forespørgsel?

  2. Konverter 'datetime' til 'time' i SQL Server (T-SQL-eksempler)

  3. Brug MySQL relationsdatabaser på Fedora 14

  4. indlæs data lokal infil FEJL 2 fil blev ikke fundet