MySQL n'autorise pas ON UPDATE CURRENT_TIMESTAMP pour un champ DATETIME
J'ai vu beaucoup de questions connexes, mais je ne peux pas mettre mon doigt sur cette question précise:
J'ai une table MySQL avec un TIMESTAMP (pour quand le domaine a été créé) et un DATETIME (à chaque fois que le champ est mis à jour). Il ressemble à ceci:
CREATE TABLE 'vis' (
ID BIGINT PRIMARY KEY AUTO_INCREMENT NOT NULL,
ENTRY VARCHAR(255),
AUTHOR VARCHAR(255),
CREATED_AT TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UPDATED_AT DATETIME ON UPDATE CURRENT_TIMESTAMP,
UPDATED_BY VARCHAR(255)
)
Quand j'ai essayer ce que, l'erreur que je reçois est: (SQL Error: 1294 SQL State: HY000) - Invalid ON UPDATE clause for 'updated_at' field
Partout où je l'ai lu (même sur Stack Overflow) suggère que je devrais être capable de faire cela, mais j'obtiens cette erreur. Peut-être il ya une autre façon d'avoir un champ qui met automatiquement à jour l'heure à chaque fois que je le mettre à jour?
Je suis de l'utilisation de MySQL Server 5.5.
source d'informationauteur Michael Plautz
Vous devez vous connecter pour publier un commentaire.
DATETIME
ne peut pas utiliserCURRENT_TIMESTAMP
sur mise à jour. Au lieu de cela, le changer pour unTIMESTAMP
.Ou, envisager d'utiliser un déclencheur de cette situation: http://dev.mysql.com/doc/refman/5.0/en/trigger-syntax.html
EDIT: Comme dans les commentaires (merci @АлександрФишер!), ce n'est plus le cas depuis MySQL 5.6.5, donc, une autre solution est de mettre à niveau votre serveur si possible.
Cette fonctionnalité semble avoir été introduit en 5.6. Fonctionne comme prévu sur mon OS par défaut, l'installation de X.
Référence: Automatique Timestamp Propriétés Avant De MySQL 5.6.5
MySQL ne pas permettre d'utiliser les fonctions par défaut
DateTime
valeurs. (Voir Type De Données MySQL Par défaut.)Ouais, et si vous la changez pour l'horodatage , ni
DEFAULT CURRENT_TIMESTAMP
niON UPDATE CURRENT_TIMESTAMP
c'est la même que la spécification deDEFAULT CURRENT_TIMESTAMP
etON UPDATE CURRENT_TIMESTAMP
.L'HORODATAGE et (MySQL 5.6.5) les types de données DATETIME offre d'initialisation automatique et la mise à jour à la date et l'heure actuelles. Pour plus d'informations, voir L'article 11.3.5, “Initialisation Automatique et la mise à Jour de cachet de date et DATETIME”.
Insérer et mettre à jour la date/l'heure automatiquement
Fonctionne avec le type de données: DATETIME ou TIMESTAMP
Testé sur: MySQL 5.6.27-2 et MariaDB 10.1.10
Stocke la date et l'heure actuelles dans l'INSERT
Stocke la date et l'heure de l'INSERTION et de mise à JOUR
Stocke la date et l'heure actuelle seulement dans la mise à JOUR
REMARQUE: lors de l'INSERTION de la valeur par défaut est '0000-00-00 00:00:00'
Regarder ma photo.
Colonne du jeu Déposé Type timestamples Attributs sur la mise à Jour CURRENT_TIMESTAMP & Extra aussi . Pas de problème après avoir changé le champ type dans la Base de données, dans mon cas . Mais pas sûr pour tous les cas.