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