MartinK: SQL Abfrage: Zeile + Zeitstempel in Archivtabelle Schaufeln

Beitrag lesen

Hallo Marko,

INSERT INTO tabelle2 SELECT ... FROM tabelle1;

[...]

ERROR 1136: Column count doesn't match value count at row 1

Das Problem, das du hast, ist, dass bei dieser Form der INSERT-Abfrage die Anzahl der einzufügenden Spalten genauso gross sein muss, wie die Anzahl der vorhandenen Spalten in der neuen Tabelle. Da du jedoch in der neuen Tabelle eine Spalte mehr hast (den Zeitstempel), funktioniert das ganze so nicht.

Hier am besten folgende Syntax verwenden:

INSERT INTO tabelle2 (Spalte2, Spalte3, Spalte4, Spalte5) SELECT Spalte1, Spalte2, Spalte3, Spalte4 FROM tabelle1 WHERE ...

Für den Fall, dass Spalte1 der Tabelle2 ein AUTO_INCREMENT Feld ist, wird dieses automatisch erzeugt. Aber auch, wenn diese Spalte als TIMESTAMP definiert wurde, wird automatisch der Zeitstempel, zu dem der INSERT stattfindet generiert und in die Spalte abgelegt. Eine TIMESTAMP Spalte wird immer auf das aktuelle Datum und die aktuelle Zeit gesetzt, wenn NULL eingetragen wird. (Was ja in unserem Fall passiert, da die Spalte1 der Tabelle2 nicht befüllt wird).

WICHTIG: Dies funktioniert nur, wenn Spalte1 der Tabelle2 als einzige oder als erste Spalte der Tabelle2 als TIMESTAMP definiert wurde.

Liebe Gruesse
Martin