Nur eine TIMESTAMP-Spalte zulässig mit CURRENT_TIMESTAMP in der DEFAULT- oder ON UPDATE-Klausel
Die historischen Codebeschränkungen von MySQL beschränkten Tabellen darauf, nur eine TIMESTAMP-Spalte zu haben CURRENT_TIMESTAMP in der DEFAULT- oder ON UPDATE-Klausel. Diese Einschränkung wurde jedoch inzwischen in neueren Versionen von MySQL aufgehoben.
Legacy-Fehler:
Beachten Sie die folgende Tabellendefinition:
CREATE TABLE `foo` ( `ProductID` INT(10) UNSIGNED NOT NULL, `AddedDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdatedDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );
Der Versuch, diese Tabelle zu erstellen, würde zu folgendem Fehler führen:
Error Code : 1293 Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
Auflösung in MySQL 5.6.5 und höher:
Ab MySQL 5.6.5 wurde diese Einschränkung entfernt. Jede TIMESTAMP- oder DATETIME-Spalte kann jetzt eine beliebige Kombination aus DEFAULT CURRENT_TIMESTAMP- und ON UPDATE CURRENT_TIMESTAMP-Klauseln haben.
Gemäß den Versionshinweisen zu MySQL 5.6.5:
Previously, at most one TIMESTAMP column per table could be automatically initialized or updated to the current date and time. This restriction has been lifted. Any TIMESTAMP column definition can have any combination of DEFAULT CURRENT_TIMESTAMP and ON UPDATE CURRENT_TIMESTAMP clauses.
Daher wird die Tabellendefinition bereitgestellt im Legacy-Fehler kann nun erfolgreich erstellt werden:
CREATE TABLE `foo` ( `ProductID` INT(10) UNSIGNED NOT NULL, `AddedDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdatedDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );
Das obige ist der detaillierte Inhalt vonKönnen MySQL-Tabellen mehrere TIMESTAMP-Spalten mit CURRENT_TIMESTAMP haben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!