Heim > Datenbank > MySQL-Tutorial > Wie kann ich untergeordnete Datensätze in MySQL löschen, wenn ein übergeordneter Datensatz gelöscht wird, ohne den übergeordneten Datensatz zu löschen?

Wie kann ich untergeordnete Datensätze in MySQL löschen, wenn ein übergeordneter Datensatz gelöscht wird, ohne den übergeordneten Datensatz zu löschen?

Patricia Arquette
Freigeben: 2025-01-10 12:17:42
Original
463 Leute haben es durchsucht

How to Delete Child Records in MySQL When a Parent Record is Deleted (Without Deleting the Parent)

Nutzung von MySQLs ON DELETE CASCADE für die abhängige Datenlöschung

Die Aufrechterhaltung der Datenintegrität erfordert häufig die automatische Entfernung zugehöriger Daten beim Löschen eines übergeordneten Datensatzes. Die ON DELETE CASCADE-Einschränkung von MySQL stellt diese Funktionalität bereit. Ein häufiges Missverständnis besteht darin, dass diese Einschränkung auch den übergeordneten Datensatz löscht, wenn ein untergeordneter Datensatz gelöscht wird. das ist falsch.

Um das gewünschte Verhalten zu erreichen – das Löschen untergeordneter (Komponenten-)Datensätze, wenn ein übergeordneter (Typ-)Datensatz gelöscht wird, ohne dass sich dies auf den übergeordneten Datensatz auswirkt – müssen Sie die Fremdschlüsselbeziehung in der untergeordneten Tabelle mit ON DELETE CASCADE definieren. Das Folgende veranschaulicht dies für eine components-Tabelle:

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

Diese Konfiguration stellt sicher, dass beim Löschen eines Datensatzes aus der types-Tabelle automatisch alle entsprechenden Einträge in der components-Tabelle gelöscht werden und die Datensätze der types-Tabelle unberührt bleiben.

Wichtige Überlegungen:

Denken Sie daran, dass Fremdschlüsseleinschränkungen die Verwendung der InnoDB-Speicher-Engine erfordern. MyISAM, die Standard-Engine in älteren MySQL-Versionen, unterstützt keine Fremdschlüssel. Stellen Sie daher sicher, dass Ihre Tabellen InnoDB verwenden, damit diese Funktionalität ordnungsgemäß funktioniert.

Das obige ist der detaillierte Inhalt vonWie kann ich untergeordnete Datensätze in MySQL löschen, wenn ein übergeordneter Datensatz gelöscht wird, ohne den übergeordneten Datensatz zu löschen?. 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