Mysql
 sql >> Base de données >  >> RDS >> Mysql

Est-il possible de définir une colonne d'horodatage qui n'est pas nulle et qui n'a pas de valeur par défaut ni de comportement spécial lors de la mise à jour ?

Les colonnes d'horodatage sont un cas particulier. Voir ici  :Par défaut, les colonnes TIMESTAMP ne sont PAS NULL, ne peuvent pas contenir de valeurs NULL et l'attribution de NULL attribue l'horodatage actuel.

Pour des informations plus détaillées, lisez Valeurs par défaut des types de données .

Plus précisément, cette situation s'applique lorsqu'elle n'est pas exécutée en mode strict. Si vous exécutez en mode strict, l'insertion d'un NULL génère une erreur.

Cela devrait s'en occuper :

ALTER TABLE tableName ALTER COLUMN columnName DROP DEFAULT;

Si cela ne fonctionne pas, cela est censé vous laisser avec la valeur par défaut (facilement écrasée) mais supprimez ON UPDATE :

ALTER TABLE tableName CHANGE columnName columnName NOT NULL DEFAULT CURRENT_TIMESTAMP;

Notez le nom répété de la colonne.