Maison > base de données > tutoriel mysql > Comment gérer plusieurs colonnes TIMESTAMP avec CURRENT_TIMESTAMP dans MySQL ?

Comment gérer plusieurs colonnes TIMESTAMP avec CURRENT_TIMESTAMP dans MySQL ?

Susan Sarandon
Libérer: 2024-11-01 02:53:28
original
908 Les gens l'ont consulté

How to Manage Multiple TIMESTAMP Columns with CURRENT_TIMESTAMP in MySQL?

Gestion de plusieurs colonnes TIMESTAMP avec CURRENT_TIMESTAMP

Dans MySQL, définir plusieurs colonnes TIMESTAMP avec les valeurs par défaut CURRENT_TIMESTAMP peut conduire à l'erreur « Définition de table incorrecte ; il ne peut y avoir qu'une seule colonne TIMESTAMP avec CURRENT_TIMESTAMP dans DEFAULT ou ON UPDATE." Pour surmonter cette limitation, envisagez l'approche suivante dans les éditions récentes de MySQL (par exemple, 5.6.25) :

Solution :

Modifiez la définition de la table comme suit :

<code class="sql">CREATE TABLE `msgs` (
    `id` INT PRIMARY KEY AUTO_INCREMENT,
    `msg` VARCHAR(256),
    `ts_create` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `ts_update` TIMESTAMP NOT NULL,
    CONSTRAINT UPDATE_ON_CHANGE_ts_update
        FOREIGN KEY (`ts_update`) REFERENCES `msgs` (`ts_create`)
        ON DELETE SET NULL
        ON UPDATE CURRENT_TIMESTAMP
)</code>
Copier après la connexion

Dans ce schéma modifié :

  • ts_create reste tel que une colonne TIMESTAMP normale avec une valeur par défaut CURRENT_TIMESTAMP.
  • ts_update est définie comme une colonne TIMESTAMP avec une contrainte NOT NULL.
  • Une contrainte de clé étrangère est créée entre ts_update et ts_create, ce qui permet des mises à jour en cascade à partir de ts_create à ts_update.
  • Le ON L'action UPDATE CURRENT_TIMESTAMP est appliquée à ts_update via la contrainte de clé étrangère, garantissant que la colonne ts_update est mise à jour avec l'horodatage actuel chaque fois que ts_create est modifié.

Cette approche vous permet de conserver le comportement souhaité de suivi de la création d'enregistrements et des horodatages de mise à jour tout en évitant l'erreur MySQL.

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 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