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
Patricia ArquetteOriginal
2025-01-10 12:17:42422Durchsuche

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>

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!

Stellungnahme:
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