sql >> Databáze >  >> RDS >> PostgreSQL

Postgresql:Jedinečné omezení přes Union 2 sloupců

Můžete použít vylučovací omezení který vyžaduje pouze jeden index:

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

&& operátor je operátor "překrývání" pro pole - což znamená "mají prvky společné, bez ohledu na pořadí prvků v poli. V tomto případě omezení brání vložit libovolný řádek, kde je jakákoli hodnota (send_id, receive_id) se objeví v některém jiném řádku tabulky (bez ohledu na sloupec).

Potřebujete však intarray rozšíření pro to.

Online příklad:https://rextester.com/QOYS23482




  1. Rychlé tipy pro návrh relační databáze pro MySQL

  2. Výběr druhého řádku tabulky pomocí rownum

  3. Pomocí ActiveRecord a Rails k vložení dat do postgresql databáze se zobrazí tato chyba:RuntimeError:ERROR C22003 Minteger o

  4. Postgresql - nelze zrušit databázi kvůli některým automatickým připojením k DB