Dans les systèmes de gestion de bases de données relationnelles comme MySQL, la conservation des informations temporelles, par exemple lorsque les enregistrements sont créés ou mis à jour, est cruciale pour l’intégrité des données et le suivi des modifications. MySQL fournit la clause CURRENT_TIMESTAMP pour remplir automatiquement les colonnes TIMESTAMP avec l'heure système actuelle.
Cependant, lorsque vous essayez de définir une table avec plusieurs colonnes TIMESTAMP, chacune avec CURRENT_TIMESTAMP comme valeur par défaut ou lors de la mise à jour, vous pouvez rencontrer le erreur suivante :
ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
Cette erreur vous empêche de créer la table avec le comportement souhaité de colonnes d'horodatage de création et de mise à jour distinctes.
Versions récentes de MySQL, tels que MySQL 5.6.25, ont résolu cette limitation. Dans ces versions, il est possible de définir plusieurs colonnes TIMESTAMP avec CURRENT_TIMESTAMP comme valeur par défaut ou en mise à jour.
Par exemple, pour créer une table avec deux colonnes TIMESTAMP, ts_create et ts_update, avec le comportement souhaité :
CREATE TABLE `msgs` ( `id` INT PRIMARY KEY AUTO_INCREMENT, `msg` VARCHAR(256), `ts_create` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, `ts_update` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );
Cette instruction créera avec succès la table avec les deux colonnes TIMESTAMP, et leurs valeurs seront automatiquement mises à jour avec l'heure actuelle du système lors de la création et de la mise à jour de l'enregistrement, respectivement.
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!