カスケードの削除時にon delete cascade
既存の外部キー制約に。最初に制約を削除してから、正しいバージョンを追加する必要があります。標準SQLでは、これを行う最も簡単な方法は
- トランザクションを開始します
- 外部キーをドロップします
- カスケードの削除時に
on delete cascade
、そして最後に - トランザクションをコミットする
変更する外部キーごとに繰り返します。
ただし、PostgreSQLには非標準の拡張機能があり、単一のSQLステートメントで複数の制約句を使用できます。例
alter table public.scores
drop constraint scores_gid_fkey,
add constraint scores_gid_fkey
foreign key (gid)
references games(gid)
on delete cascade;
ドロップする外部キー制約の名前がわからない場合は、pgAdminIIIで検索できます(テーブル名をクリックしてDDLを確認するか、「制約」が表示されるまで階層を展開します)。または、情報スキーマをクエリできます。
select *
from information_schema.key_column_usage
where position_in_unique_constraint is not null