J'ai un horodatage dans une table mysql avec l'attribut "ON UPDATE CURRENT_TIMESTAMP". Existe-t-il un moyen de désactiver manuellement la mise à jour de l'horodatage lors d'une occasion spéciale? (par exemple: mettre à jour l'entrée pour réviser un article de blog, mais pas pour la re-dater)
Existe-t-il un moyen de désactiver manuellement la mise à jour de l'horodatage lors d'une occasion spéciale? (par exemple: mettre à jour l'entrée pour réviser un article de blog, mais pas pour la re-dater)
On dirait que vous devez configurer la contrainte par défaut pour qu'elle remplisse la colonne lors de l'insertion uniquement:
DEFAULT CURRENT_TIMESTAMP
Si vous le changez uniquement, cela signifie que les révisions ne déclencheront pas la mise à jour de la valeur d'horodatage. IE: Si vous avez créé blogpost hier et corrigé une faute de frappe aujourd'hui, la date dans la colonne serait toujours celle d'hier.
Vous pouvez définir manuellement la valeur de la colonne sur sa valeur actuelle dans la commande de mise à jour:
UPDATE table SET x=y, timestampColumn=timestampColumn WHERE a=b;
Si vous ne définissez pas la valeur dans la requête, celle-ci sera mise à jour avec l'horodatage actuel conformément à la définition de la table.
Pour que votre table/horodatage se mette à jour automatiquement:
ALTER TABLE myTable
CHANGE myTimestampColumn
myTimestampColumn TIMESTAMP NOT NULL
DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP;
Pour le fairepasmise à jour automatique:
ALTER TABLE myTable
CHANGE myTimestampColumn
myTimestampColumn TIMESTAMP NOT NULL
DEFAULT CURRENT_TIMESTAMP;
REMARQUE: la partie "default current_timestamp" le définit simplement sur le cachet actuel au moment par défaut, car le champ n'est pas null. Vous pouvez supprimer les valeurs non nulle et par défaut, si vous le souhaitez.
n'utilisez pas d'horodatage, mais suivez les temps manuellement.
si vous voulez vraiment mettre à jour un enregistrement et ne le mettez pas à jour, utilisez l’horodatage:
UPDATE `table` SET `timestamp` = `timestamp`, `col` = 'new data' …;
Si vous modifiez l'heure de mise à jour, vous devez prendre en compte le fait que si la valeur a été mise à jour mais pas modifiée (la valeur de sauvegarde a été mise à jour), le "on update Current_timestemp" ne sera pas mis à jour et vous devrez définir le temps d'utilisation. manuellement
SET LastUpdatedDate=NOW() WHERE
L'idée est venue d'ici: Appuyez sur l'enregistrement MYSQL pour mettre à jour le champ TIMESTAMP