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

Jak dodać po usunięciu ograniczeń kaskadowych?

Jestem prawie pewien, że nie możesz po prostu dodać on delete cascade do istniejącego ograniczenia klucza obcego. Musisz najpierw usunąć ograniczenie, a następnie dodać poprawną wersję. Uważam, że w standardowym SQL najłatwiej to zrobić,

  • rozpocznij transakcję,
  • upuść klucz obcy,
  • dodaj klucz obcy za pomocą on delete cascade i wreszcie
  • zatwierdź transakcję

Powtórz dla każdego klucza obcego, który chcesz zmienić.

Ale PostgreSQL ma niestandardowe rozszerzenie, które pozwala na użycie wielu klauzul ograniczających w jednej instrukcji SQL. Na przykład

alter table public.scores
drop constraint scores_gid_fkey,
add constraint scores_gid_fkey
   foreign key (gid)
   references games(gid)
   on delete cascade;

Jeśli nie znasz nazwy ograniczenia klucza obcego, które chcesz usunąć, możesz albo poszukać go w pgAdminIII (po prostu kliknij nazwę tabeli i spójrz na DDL lub rozwiń hierarchię, aż zobaczysz „Ograniczenia”), lub możesz zapytać o schemat informacji.

select *
from information_schema.key_column_usage
where position_in_unique_constraint is not null


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zresetować sekwencję w postgresie i wypełnić kolumnę id nowymi danymi?

  2. Zatrzymać (długo) wykonywanie zapytania SQL w PostgreSQL, gdy sesja lub żądania już nie istnieją?

  3. Jak dopasować ostatnie dwa słowa w zdaniu w PostgreSQL?

  4. Wdrażanie i konserwacja PostgreSQL z Ansible

  5. Ogólne rozwiązanie Ruby dla SQLite3 LIKE czy PostgreSQL ILIKE?