Saya cukup yakin Anda tidak bisa begitu saja menambahkan on delete cascade
ke batasan kunci asing yang ada. Anda harus menghilangkan batasan terlebih dahulu, lalu menambahkan versi yang benar. Dalam SQL standar, saya yakin cara termudah untuk melakukannya adalah dengan
- mulai transaksi,
- lepaskan kunci asing,
- tambahkan kunci asing dengan
on delete cascade
, dan akhirnya - melakukan transaksi
Ulangi untuk setiap kunci asing yang ingin Anda ubah.
Tetapi PostgreSQL memiliki ekstensi non-standar yang memungkinkan Anda menggunakan beberapa klausa batasan dalam satu pernyataan SQL. Misalnya
alter table public.scores
drop constraint scores_gid_fkey,
add constraint scores_gid_fkey
foreign key (gid)
references games(gid)
on delete cascade;
Jika Anda tidak tahu nama batasan kunci asing yang ingin Anda hapus, Anda dapat mencarinya di pgAdminIII (cukup klik nama tabel dan lihat DDL, atau perluas hierarki hingga Anda melihat "Kendala"), atau Anda dapat menanyakan skema informasi.
select *
from information_schema.key_column_usage
where position_in_unique_constraint is not null