Heim > Datenbank > MySQL-Tutorial > Warum kann ich einen Jobdatensatz nicht löschen: Verstoß gegen Fremdschlüsseleinschränkungen?

Warum kann ich einen Jobdatensatz nicht löschen: Verstoß gegen Fremdschlüsseleinschränkungen?

Patricia Arquette
Freigeben: 2025-01-14 16:17:44
Original
568 Leute haben es durchsucht

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

Fehler: Verletzung der Fremdschlüsseleinschränkung – übergeordnete Zeilen werden gelöscht

Der Versuch, einen Jobdatensatz zu löschen (z. B. DELETE FROM jobs WHERE job_id = 1 LIMIT 1;), führt zu Fehler Nr. 1451: „Eine übergeordnete Zeile kann nicht gelöscht oder aktualisiert werden: Eine Fremdschlüsseleinschränkung schlägt fehl.“ Dies liegt daran, dass die advertisers-Tabelle über einen Fremdschlüssel verfügt, der auf das jobs.advertiser_id der

-Tabelle verweist

Datenbankschema:

Die Datenbank enthält diese Tabellen:

  • advertisers:

    • advertiser_id (Primärschlüssel)
    • name, password, email, address, phone, fax, session_token
    • Fremdschlüsseleinschränkung advertisers_ibfk_1 Referenzierung jobs.advertiser_id
  • jobs:

    • job_id (Primärschlüssel)
    • advertiser_id (Fremdschlüssel)
    • name, shortdesc, longdesc, address, time_added, active, moderated

Lösung: Fremdschlüsseleinschränkungen vorübergehend deaktivieren

Die Lösung besteht darin, Fremdschlüsselprüfungen vorübergehend zu deaktivieren, um das Löschen zu ermöglichen, und sie dann wieder zu aktivieren, um die Datenintegrität zu wahren:

<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>
Nach dem Login kopieren

Diese Methode ermöglicht das Löschen unter Beibehaltung der referenziellen Integrität der gesamten Datenbank. Denken Sie daran, die Auswirkungen der Deaktivierung von Fremdschlüsselprüfungen sorgfältig abzuwägen und diesen Ansatz nur zu verwenden, wenn dies unbedingt erforderlich ist.

Das obige ist der detaillierte Inhalt vonWarum kann ich einen Jobdatensatz nicht löschen: Verstoß gegen Fremdschlüsseleinschränkungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage