Une seule colonne TIMESTAMP autorisée avec CURRENT_TIMESTAMP dans la clause DEFAULT ou ON UPDATE
Les limitations du code historique de MySQL limitaient les tables à n'avoir qu'une seule colonne TIMESTAMP avec CURRENT_TIMESTAMP dans la clause DEFAULT ou ON UPDATE. Cependant, cette limitation a depuis été levée dans les versions récentes de MySQL.
Erreur héritée :
Considérez la définition de tableau suivante :
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 );
Tenter de créer cette table entraînerait l'erreur suivante :
Error Code : 1293 Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
Résolution dans MySQL 5.6.5 et versions ultérieures :
À partir de MySQL 5.6.5, cette restriction a été supprimée. Toute colonne TIMESTAMP ou DATETIME peut désormais avoir n'importe quelle combinaison de clauses DEFAULT CURRENT_TIMESTAMP et ON UPDATE CURRENT_TIMESTAMP.
Conformément aux notes de version 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.
Par conséquent, la définition de table fournie dans l'erreur héritée peut maintenant être créée avec succès :
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 );
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!