Memanfaatkan ON DELETE CASCADE MySQL untuk Pemadaman Data Bergantung
Mengekalkan integriti data selalunya memerlukan pengalihan keluar automatik data yang berkaitan selepas pemadaman rekod induk. Kekangan ON DELETE CASCADE
MySQL menyediakan fungsi ini. Salah faham biasa ialah kekangan ini turut memadamkan rekod induk apabila rekod anak dipadamkan; ini tidak betul.
Untuk mencapai tingkah laku yang diingini—memadamkan rekod anak (komponen) apabila rekod induk (jenis) dipadamkan tanpa menjejaskan ibu bapa—anda mesti menentukan hubungan kunci asing dalam jadual anak menggunakan ON DELETE CASCADE
. Yang berikut menggambarkan ini untuk jadual components
:
<code class="language-sql">CREATE TABLE `components` ( `id` int(10) unsigned NOT NULL auto_increment, `typeId` int(10) unsigned NOT NULL, `moreInfo` VARCHAR(32), -- etc PRIMARY KEY (`id`), KEY `type` (`typeId`), CONSTRAINT `myForeignKey` FOREIGN KEY (`typeId`) REFERENCES `types` (`id`) ON DELETE CASCADE ON UPDATE CASCADE );</code>
Konfigurasi ini memastikan bahawa pemadaman rekod daripada jadual types
secara automatik memadamkan semua entri yang sepadan dalam jadual components
, meninggalkan rekod jadual types
tidak disentuh.
Pertimbangan Penting:
Ingat bahawa kekangan kunci asing memerlukan penggunaan enjin storan InnoDB. MyISAM, enjin lalai dalam versi MySQL yang lebih lama, tidak menyokong kunci asing. Oleh itu, pastikan jadual anda menggunakan InnoDB agar fungsi ini berfungsi dengan betul.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memadam Rekod Anak dalam MySQL Apabila Rekod Induk Dipadamkan Tanpa Memadam Induk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!