sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgresql:Unik begränsning över förening av 2 kolumner

Du kan använda en uteslutningsrestriktion som bara kräver ett enda index:

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

&& operatorn är "överlappningsoperatorn" för arrayer - vilket betyder "har element gemensamma, oavsett ordningen på elementen i arrayen. I det här fallet förhindrar begränsningen att infoga någon rad där något värde på (send_id, receive_id) visas i någon annan rad i tabellen (oavsett kolumn).

Du behöver dock intarray förlängning för det.

Onlineexempel:https://rextester.com/QOYS23482




  1. Kul med (columnstore) komprimering på ett väldigt stort bord – del 2

  2. DAO.Recordset.Update resultat i reckord lock

  3. MySQL:Hur man infogar flera poster med samma ID autoinkrement

  4. Fråga för att få topp 2 och 3:e poster från en tabell