PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Postgresql:Unikalne ograniczenie nad Unią 2 kolumn

Możesz użyć ograniczenia wykluczenia który wymaga tylko jednego indeksu:

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

&& operator jest operatorem "overlaps" dla tablic - co oznacza "mają elementy wspólne, niezależnie od kolejności elementów w tablicy. W tym przypadku ograniczenie uniemożliwia wstawienie dowolnego wiersza, w którym dowolna wartość (send_id, receive_id) pojawia się w innym wierszu tabeli (niezależnie od kolumny).

Potrzebujesz jednak intarray rozszerzenie do tego.

Przykład online:https://rextester.com/QOYS23482




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ustaw IGNORECASE i inne opcje dla H2 w grze! Test ramowy

  2. Dodanie Postgresql do mojej aplikacji Heroku - problemy z zapytaniami powodującymi awarię składni?

  3. Czy można dodać własne ciągi do Django SearchVectorField?

  4. Ograniczenie sprawdzania PostgreSQL w Liquibase

  5. Znajdź nazwę hosta i port za pomocą poleceń PSQL