Maison >base de données >tutoriel mysql >Les tables MySQL peuvent-elles avoir plusieurs colonnes TIMESTAMP avec CURRENT_TIMESTAMP ?

Les tables MySQL peuvent-elles avoir plusieurs colonnes TIMESTAMP avec CURRENT_TIMESTAMP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-30 08:35:11229parcourir

Can MySQL Tables Have Multiple TIMESTAMP Columns with CURRENT_TIMESTAMP?

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!

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