Rumah >pangkalan data >tutorial mysql >Mengapa Saya Tidak Boleh Memadam Rekod Kerja: Pelanggaran Kekangan Utama Asing?

Mengapa Saya Tidak Boleh Memadam Rekod Kerja: Pelanggaran Kekangan Utama Asing?

Patricia Arquette
Patricia Arquetteasal
2025-01-14 16:17:44570semak imbas

Why Can't I Delete a Job Record: Foreign Key Constraint Violation?

Ralat: Pelanggaran Kekangan Kunci Asing – Memadam Baris Induk

Percubaan untuk memadamkan rekod kerja (cth., DELETE FROM jobs WHERE job_id = 1 LIMIT 1;) mengakibatkan ralat #1451: "Tidak boleh memadam atau mengemas kini baris induk: kekangan kunci asing gagal". Ini berlaku kerana jadual advertisers mempunyai kunci asing yang merujuk kepada jobs jadual advertiser_id.

Skema Pangkalan Data:

Pangkalan data termasuk jadual ini:

  • advertisers:

    • advertiser_id (kunci utama)
    • name, password, email, address, phone, fax, session_token
    • Kekangan kunci asing advertisers_ibfk_1 merujuk jobs.advertiser_id
  • jobs:

    • job_id (kunci utama)
    • advertiser_id (kunci asing)
    • name, shortdesc, longdesc, address, time_added, active, moderated

Penyelesaian: Nyahaktifkan Kekangan Utama Asing buat sementara waktu

Penyelesaian melibatkan melumpuhkan sementara semakan kunci asing untuk membenarkan pemadaman, kemudian membolehkannya semula untuk mengekalkan integriti data:

<code class="language-sql">SET FOREIGN_KEY_CHECKS = 0;  -- Disable foreign key checks

DELETE FROM `jobs` WHERE `job_id` = 1 LIMIT 1; -- Delete the problematic job record

SET FOREIGN_KEY_CHECKS = 1;  -- Re-enable foreign key checks</code>

Kaedah ini membolehkan pemadaman sambil mengekalkan integriti rujukan keseluruhan pangkalan data. Ingat untuk mempertimbangkan dengan teliti implikasi melumpuhkan semakan kunci asing dan hanya gunakan pendekatan ini apabila benar-benar perlu.

Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Memadam Rekod Kerja: Pelanggaran Kekangan Utama Asing?. 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