Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mencegah Rekod Anak Yatim Apabila Memadam Data dengan Kekangan Kunci Asing MySQL?

Bagaimana untuk Mencegah Rekod Anak Yatim Apabila Memadam Data dengan Kekangan Kunci Asing MySQL?

Susan Sarandon
Lepaskan: 2024-12-29 11:55:10
asal
430 orang telah melayarinya

How to Prevent Orphaned Records When Deleting Data with MySQL Foreign Key Constraints?

Kekangan Kunci Asing MySQL: Memadam Rekod Orphaned

Pangkalan data sering mengekalkan hubungan antara jadual melalui kekangan kunci asing. Kekangan ini memastikan integriti data dengan menghalang rekod yatim—rekod yang merujuk kepada data yang tidak wujud dalam jadual lain. Dalam konteks ini, kami meneroka cara untuk melaksanakan pemadaman bertingkat pada kunci asing dalam MySQL.

Senario Contoh

Pertimbangkan jadual berikut:

  • kategori: ID, nama
  • produk: ID, nama
  • categories_products: category_id, product_id

categories_products tables create a many -kepada-banyak hubungan antara dua jadual lain. Sekarang, katakan kita mahu memadamkan kategori. Bagaimanakah kita boleh memastikan bahawa produk yang sepadan tidak dipadamkan jika ia turut dikaitkan dengan kategori lain?

Melaksanakan Pemadaman Lata

Untuk mencapai tingkah laku yang diingini, kita perlu sediakan kekangan kunci asing dengan klausa ON DELETE CASCADE. Apabila mentakrifkan lajur foreign_key_id dalam jadual anak (categories_products), kami boleh menentukan klausa ini seperti berikut:

FOREIGN KEY (category_id) REFERENCES categories (id) ON DELETE CASCADE
Salin selepas log masuk

Klausa ini memastikan bahawa jika kategori dipadamkan, semua rekod yang sepadan dalam jadual categories_products juga akan dipadamkan. Walau bagaimanapun, lata tidak akan disebarkan ke jadual produk kerana tiada kekangan kunci asing ditakrifkan di sana.

Contoh Demonstrasi

Andaikan kami mempunyai perkara berikut data:

  • kategori:

    • merah, hijau, biru, putih, hitam
  • produk:

    • but, sarung tangan, topi, kot
  • kategori_produk:

    • but merah, sarung tangan hijau, kot merah, topi hitam

Jika kami memadamkan kategori 'merah', tindakan berikut akan berlaku:

  • Entri kategori 'merah' dialih keluar daripada jadual kategori.
  • Entri 'but merah' dan 'kot merah' dialih keluar daripada jadual categories_products.
  • Kategori 'but' dan 'kot' kekal tidak terjejas dalam kategori jadual.
  • 'But' dan 'sarung tangan' kekal tidak terjejas dalam jadual produk.

Dengan cara ini, pemadaman bertingkat memastikan integriti data dengan mengalih keluar hanya rekod berkaitan yang berkaitan, menghalang rekod yatim dan mengekalkan hubungan antara jadual.

Atas ialah kandungan terperinci Bagaimana untuk Mencegah Rekod Anak Yatim Apabila Memadam Data dengan Kekangan Kunci Asing MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan