PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie füge ich Kaskadenbeschränkungen hinzu?

Ich bin mir ziemlich sicher, dass Sie on delete cascade nicht einfach hinzufügen können auf eine vorhandene Fremdschlüsseleinschränkung. Sie müssen zuerst die Einschränkung löschen und dann die richtige Version hinzufügen. In Standard-SQL ist dies meiner Meinung nach am einfachsten

  • eine Transaktion starten,
  • Lassen Sie den Fremdschlüssel fallen,
  • Fügen Sie einen Fremdschlüssel mit on delete cascade hinzu , und schließlich
  • die Transaktion ausführen

Wiederholen Sie dies für jeden Fremdschlüssel, den Sie ändern möchten.

PostgreSQL verfügt jedoch über eine nicht standardmäßige Erweiterung, mit der Sie mehrere Einschränkungsklauseln in einer einzigen SQL-Anweisung verwenden können. Zum Beispiel

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

Wenn Sie den Namen der Fremdschlüsselbeschränkung, die Sie löschen möchten, nicht kennen, können Sie ihn entweder in pgAdminIII nachschlagen (klicken Sie einfach auf den Tabellennamen und sehen Sie sich die DDL an, oder erweitern Sie die Hierarchie, bis Sie „Einschränkungen“ sehen). oder Sie können das Informationsschema abfragen.

select *
from information_schema.key_column_usage
where position_in_unique_constraint is not null