Historiquement, dans les versions MySQL antérieures à 5.6.5, il était une restriction qui limitait une table à n'avoir qu'une seule colonne TIMESTAMP avec soit un DEFAULT Clause CURRENT_TIMESTAMP ou ON UPDATE CURRENT_TIMESTAMP. Cette limitation s'étendait aux entiers INT, BIGINT et SMALLINT lors de leur introduction initiale en 2008.
Cette limitation découlait de problèmes d'implémentation hérités qui nécessitaient une implémentation spécifique pour la fonctionnalité CURRENT_TIMESTAMP.
Par exemple, considérons la définition du tableau suivant, qui tente de définir deux Colonnes TIMESTAMP avec la valeur CURRENT_TIMESTAMP :
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 ) ENGINE=INNODB;
Cette définition entraînerait l'erreur suivante :
Code d'erreur : 1293<br>Définition de table incorrecte ; il ne peut<br>y avoir qu'une seule colonne TIMESTAMP avec<br>CURRENT_TIMESTAMP dans DEFAULT ou ON<br>Clause UPDATE
Cette erreur indique que la définition de la table a violé la restriction susmentionnée.
Malgré le fondement technique Pour cette limitation, l'équipe MySQL a reconnu son inconvénient. Par la suite, dans MySQL 5.6.5 (publié le 10 avril 2012), la restriction a été levée.
Le journal des modifications de cette mise à jour indiquait :
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. In addition, these clauses now can be used with DATETIME column definitions.
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!