Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memadam Rekod Ibu Bapa dalam PostgreSQL Apabila Tiada Anak Merujuk kepada Mereka?

Bagaimana untuk Memadam Rekod Ibu Bapa dalam PostgreSQL Apabila Tiada Anak Merujuk kepada Mereka?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-29 07:20:021038semak imbas

How to Delete Parent Records in PostgreSQL When No Children Refer to Them?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn