sql >> Database >  >> RDS >> PostgreSQL

Hoe voeg ik cascadebeperkingen toe?

Ik ben er vrij zeker van dat je niet zomaar on delete cascade kunt toevoegen aan een bestaande externe sleutelbeperking. U moet eerst de beperking laten vallen en vervolgens de juiste versie toevoegen. In standaard SQL denk ik dat de gemakkelijkste manier om dit te doen is om

  • start een transactie,
  • laat de externe sleutel vallen,
  • voeg een externe sleutel toe met on delete cascade , en tot slot
  • voer de transactie uit

Herhaal dit voor elke externe sleutel die u wilt wijzigen.

Maar PostgreSQL heeft een niet-standaard extensie waarmee u meerdere beperkingsclausules in één SQL-instructie kunt gebruiken. Bijvoorbeeld

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

Als u de naam van de externe sleutelbeperking die u wilt verwijderen niet weet, kunt u deze opzoeken in pgAdminIII (klik gewoon op de tabelnaam en kijk naar de DDL, of vouw de hiërarchie uit totdat u "Constraints" ziet), of u kunt het informatieschema opvragen.

select *
from information_schema.key_column_usage
where position_in_unique_constraint is not null


  1. Basisprincipes van SQL Server ALTER TABLE-instructie

  2. Liquibase-slot - redenen?

  3. Wat is er nieuw in MariaDB Cluster 10.4

  4. Een database verwijderen in cPanel