Pemicu di Postgres dipicu secara tidak terduga

Saya memiliki tabel induk dan beberapa tabel anak dengan FK yang menunjuk ke tabel induk. Saya menghapus catatan dari tabel induk dan saya perhatikan ini memicu pemicu penghapusan pada semua tabel anak, meskipun catatan induk yang saya hapus tidak memiliki catatan anak di tabel anak ini.

Menurutku ini aneh. Tapi saya berasal dari SQL Server, jadi perilakunya mungkin berbeda di sini di Postgres.

Pemicu saya adalah pemicu tingkat pernyataan jika itu penting.

Bisakah seseorang menjelaskan, tunjukkan saya beberapa referensi?

Saya tidak memiliki kode apa pun untuk diposkan saat ini... tetapi saya pikir situasinya akan jelas bagi beberapa orang yang memiliki lebih banyak pengalaman di Postgres.


person peter.petrov    schedule 02.12.2018    source sumber


Jawaban (1)


Pemicu tingkat pernyataan diaktifkan terlepas dari jumlah rekaman yang terpengaruh. Jadi meskipun tidak ada catatan anak, pernyataan hapus otomatis (dengan asumsi FK Anda adalah on delete cascade) dijalankan dan pemicu diaktifkan.

person Gregor Raýman    schedule 02.12.2018