Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memadam Rekod Ibu Bapa dalam PostgreSQL Apabila Tiada Anak Merujuk kepada Mereka?
Pemadaman Induk Bertingkat: Memadam Induk Apabila Tidak Lagi Dirujuk oleh Kanak-kanak
Dalam sistem pangkalan data, apabila jadual anak merujuk jadual induk melalui kunci asing, senario biasa timbul apabila memadamkan baris anak: patutkah baris induk turut dipadamkan jika tiada anak lain merujuknya?
PostgreSQL 9.1 dan Kemudian: Pendekatan CTE Pengubahsuaian Data
Menghapuskan Syarat Perlumbaan<code class="sql">WITH del_child AS ( DELETE FROM child WHERE child_id = 1 RETURNING parent_id, child_id ) DELETE FROM parent p USING del_child x WHERE p.parent_id = x.parent_id AND NOT EXISTS ( SELECT FROM child c WHERE c.parent_id = x.parent_id AND c.child_id <> x.child_id -- ! );</code>Untuk menghapuskan sepenuhnya keadaan perlumbaan, ia perlu penting untuk mengunci baris induk sebelum sebarang pemadaman berlaku:
Kaedah ini memastikan bahawa hanya satu transaksi boleh mengunci ibu/bapa yang sama pada satu masa, menghalang berbilang transaksi daripada memadamkan semua anak dan meninggalkan ibu bapa yang tergantung.
Atas ialah kandungan terperinci Bagaimana untuk Memadam Rekod Ibu Bapa dalam PostgreSQL Apabila Tiada Anak Merujuk kepada Mereka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!