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
Libérer: 2024-11-30 08:35:11
original
226 Les gens l'ont consulté

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
);
Copier après la connexion
Copier après la connexion

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
Copier après la connexion

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.
Copier après la connexion

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
);
Copier après la connexion
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal