Der MySQL Server führt UPDATE-Anweisungen aus,
      indem er so lange (Tabelle, Index, Bereich usw.) scannt, bis er
      eine Zeile findet, die zu der WHERE-Klausel der
      UPDATE-Anweisung passt. Dann ruft er die
      Funktion
      update_row()
       auf:
    
int ha_foo::update_row(const byte *old_data, byte *new_data)
      Der Parameter *old_data enthält die Daten, die
      vor dem Update in der Zeile gespeichert waren, während der
      Parameter *new_data den neuen Zeileninhalt
      enthält (im internen Zeilenformat von MySQL).
    
Wie ein Update durchgeführt wird, hängt vom Zeilenformat und der Speicherimplementierung ab. Manche Speicher-Engines ersetzen Daten direkt, während andere Implementierungen die vorhandene Zeile löschen und die neue Zeile am Ende der Datendatei anfügen.
      Speicher-Engines ohne Indizierung können den Inhalt des
      Parameters *old_data ignorieren und müssen
      sich nur mit dem Pufferinhalt *new_data
      abgeben. Engines mit Transaktionsunterstützung müssen unter
      Umständen die Puffer vergleichen, um für ein mögliches
      späteres Rollback herauszufinden, welche Änderungen vorgenommen
      wurden.
    
      Enthält die zu ändernde Tabelle Zeitstempelspalten, muss die
      Funktion update_row() auch diese Zeitstempel
      aktualisieren. Das folgende Beispiel stammt von der
      Speicher-Engine CSV:
    
int ha_tina::update_row(const byte * old_data, byte * new_data)
{
   int size;
   DBUG_ENTER("ha_tina::update_row");
 
   statistic_increment(table->in_use->status_var.ha_read_rnd_next_count,
 		      &LOCK_status);
 
   if (table->timestamp_field_type & TIMESTAMP_AUTO_SET_ON_UPDATE)
     table->timestamp_field->set_time();
 
   size= encode_quote(new_data);
 
   if (chain_append())
     DBUG_RETURN(-1);
 
   if (my_write(share->data_file, buffer.ptr(), size, MYF(MY_WME | MY_NABP)))
     DBUG_RETURN(-1);
   DBUG_RETURN(0);
}
Beachten Sie, wie in diesem Beispiel der Zeitstempel eingestellt wurde.
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.

