MySQL CURRENT_TIMESTAMP Feld-updates bei jedem update

Der beste Weg, um zu erklären, dieses problem wird mit einem Beispiel.

Ich habe eine Tabelle:

CREATE TABLE `example` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `data` varchar(255) DEFAULT NULL,
  `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

Ergebnis:

 - id | Daten | erstellt | aktualisiert 
(NULL)| (NULL) | (NULL) | (NULL) 

Dann habe ich einige Daten eingefügt werden:

INSERT INTO example (
  `data`
) VALUES (
  'abc123'
)

Ergebnis:

 - id | Daten | erstellt | aktualisiert 
1 | abc123 | 2013-01-16 13:12:16 | (NULL) 

Und dann update ich

UPDATE example SET 
  `data` = 'def456',
  `updated` = NOW()
WHERE id = 1

Ergebnis:

 - id | Daten | erstellt | aktualisiert 
1 | def456| 2013-01-16 13:16:24 | 2013-01-16 13:14:26 

Das problem: Beachten Sie, wie die created Feld auch aktualisiert und hat eine etwas andere Zeit, um richtig gespeichert aktualisiert-Feld. Ich habe diese Beispiel-Tabelle-und andere, die in ähnlicher Weise auf der gleichen Datenbank ohne dieses problem, also ich bin vollkommen verwirrt durch es.

Nur um zu klären, beachten Sie, wie die created Feld AUCH aktualisiert. Dieser funktioniert nicht wie dokumentiert.

InformationsquelleAutor Akahadaka | 2013-01-16

Schreibe einen Kommentar