Der MySQL Server verwendet für
DELETE
-Anweisungen denselben Ansatz wie für
UPDATE
-Anweisungen: Er geht mithilfe der
Funktion rnd_next()
zu der Zeile, die
gelöscht werden soll, und ruft dann die Funktion
delete_row()
auf:
int ha_foo::delete_row(const byte *buf)
Der Parameter *buf
enthält den Inhalt der zu
löschenden Zeile. Speicher-Engines ohne Indizierung können
diesen Parameter ignorieren, aber Speicher-Engines mit
Transaktionsunterstützung müssen die gelöschten Daten für ein
späteres Rollback speichern.
Das folgende Beispiel stammt von der
CSV
-Engine:
int ha_tina::delete_row(const byte * buf) { DBUG_ENTER("ha_tina::delete_row"); statistic_increment(table->in_use->status_var.ha_delete_count, &LOCK_status); if (chain_append()) DBUG_RETURN(-1); --records; DBUG_RETURN(0); }
Das Wichtige an diesem Beispiel sind die Aktualisierung der
delete_count
-Statistik und die Zeilenzählung.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.