Maison >base de données >tutoriel mysql >Quelles étaient les restrictions d'utilisation de CURRENT_TIMESTAMP avec les colonnes TIMESTAMP dans MySQL avant la version 5.6.5 ?

Quelles étaient les restrictions d'utilisation de CURRENT_TIMESTAMP avec les colonnes TIMESTAMP dans MySQL avant la version 5.6.5 ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-15 16:20:13856parcourir

What Were the Restrictions on Using CURRENT_TIMESTAMP with TIMESTAMP Columns in MySQL Before Version 5.6.5?

Restrictions sur les colonnes TIMESTAMP avec CURRENT_TIMESTAMP dans les clauses DEFAULT ou ON UPDATE dans les versions MySQL antérieures à 5.6.5

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.

Erreur Message et problèmes associés

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.

Suppression de restriction

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn