Pelanggaran Kekangan Kunci Asing: "Tidak boleh memadam atau mengemas kini baris induk"
Memadamkan rekod kerja boleh mencetuskan ralat "Tidak boleh memadam atau mengemas kini baris induk: kekangan kunci asing gagal" (#1451). Ini berlaku disebabkan oleh hubungan kunci asing antara jadual jobs
dan advertisers
.
Memahami Kekangan Utama Asing
Kekangan kunci asing memastikan integriti rujukan. Lajur jobs
jadual advertiser_id
mesti sentiasa sepadan dengan advertiser_id
yang sah dalam jadual advertisers
. Ini menghalang rekod yatim piatu. Ralat timbul apabila rekod kerja dipautkan kepada pengiklan dan pemadaman kerja itu akan meninggalkan rujukan yang tergantung.
Penyelesaian
1. Melumpuhkan Pemeriksaan Kunci Asing buat sementara waktu:
Pembetulan terpantas ialah melumpuhkan semakan kunci asing buat sementara waktu, memadamkan kerja, dan kemudian mendayakannya semula:
<code class="language-sql">SET FOREIGN_KEY_CHECKS=0; DELETE FROM `jobs` WHERE `job_id` = 1 LIMIT 1; SET FOREIGN_KEY_CHECKS=1;</code>
Kaedah ini memintas kekangan tetapi penting untuk mendayakan semula semakan selepas itu untuk integriti data.
2. Melaksanakan Pemadaman Lata:
Penyelesaian yang lebih mantap ialah mengubah suai kekangan kunci asing untuk menggunakan pemadaman berlatarkan. Ini secara automatik memadamkan rekod pengiklan yang berkaitan apabila kerja dialih keluar:
<code class="language-sql">ALTER TABLE `advertisers` ADD CONSTRAINT `advertisers_ibfk_1` FOREIGN KEY (`advertiser_id`) REFERENCES `jobs` (`advertiser_id`) ON DELETE CASCADE;</code>
Pemadaman bertingkat mengekalkan ketekalan data tanpa memerlukan kekangan sementara melumpuhkan. Pilih pendekatan ini untuk reka bentuk pangkalan data yang lebih bersih dan boleh diselenggara.
Atas ialah kandungan terperinci Mengapa Pemadaman Rekod Kerja Menyebabkan 'Pelanggaran Kekangan Kunci Asing'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!