Wenn Ihre Speicher-Engine Lesefähigkeiten bekommen hat, ist als
Nächstes die Unterstützung für
INSERT
-Anweisungen an der Reihe. Beherrscht
Ihre Speicher-Engine INSERT
, so kann sie auch
mit WORM(write once, read many)-Anwendungen wie etwa dem
Protokollieren und Archivieren von Daten zur späteren Analyse
umgehen.
Alle INSERT
-Operationen werden von der Funktion
write_row()
erledigt:
int ha_foo::write_row(byte *buf)
Der Parameter *buf
enthält die einzufügende
Zeile im internen Format von MySQL. Eine simple Speicher-Engine
könnte einfach an das Ende der Datendatei gehen und den Inhalt
des Puffers direkt dort anfügen (das würde auch das Lesen von
Zeilen vereinfachen, da man die Zeile lesen und direkt an den
Puffer-Parameter der Funktion rnd_next()
übergeben könnte).
Der Prozess zum Schreiben einer Zeile ist genau das Gegenteil vom
Leseprozess: Er nimmt die Daten im internen Zeilenformat von MySQL
und schreibt sie in die Datendatei. Das folgende Beispiel stammt
von der Speicher-Engine MyISAM
:
int ha_myisam::write_row(byte * buf) { statistic_increment(table->in_use->status_var.ha_write_count,&LOCK_status); /* Zeitstempel-Spalte, falls vorhanden, auf die aktuelle Zeit setzen */ if (table->timestamp_field_type & TIMESTAMP_AUTO_SET_ON_INSERT) table->timestamp_field->set_time(); /* Wenn eine auto_increment-Spalte vorhanden ist und wir eine geänderte oder neue Zeile laden, muss der auto_increment-Wert im Datensatz aktualisiert werden. */ if (table->next_number_field && buf == table->record[0]) update_auto_increment(); return mi_write(file,buf); }
Im obigen Beispiel sind drei Dinge bemerkenswert: Die
Tabellenstatistik für Schreiboperationen wird aktualisiert, der
Zeitstempel wird vor dem eigentlichen Schreibvorgang aktualisiert
und die AUTO_INCREMENT
-Werte werden
hochgesetzt.
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.