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

Erreur mysql datetime DEFAULT CURRENT_TIMESTAMP

Le DEFAULT CURRENT_TIMESTAMP prise en charge d'un DATETIME (type de données) a été ajouté dans MySQL 5.6.

Dans les versions 5.5 et antérieures, cela ne s'appliquait qu'à TIMESTAMP (type de données) colonnes.

Il est possible d'utiliser un BEFORE INSERT trigger en 5.5 pour attribuer une valeur par défaut à une colonne.

 DELIMITER $$

 CREATE TRIGGER ...
 BEFORE INSERT ON mytable
 FOR EACH ROW
 BEGIN
    IF NEW.mycol IS NULL THEN
       SET NEW.mycol = NOW();
    END IF;
 END$$

La sensibilité à la casse (des requêtes sur des valeurs stockées dans des colonnes) est due à la collation utilisé pour la colonne. Classements se terminant par _ci sont insensibles à la casse. Par exemple latin1_swedish_ci est insensible à la casse, mais latin1_general_cs est sensible à la casse.

La sortie de SHOW CREATE TABLE foo affichera le jeu de caractères et le classement pour les colonnes de type de caractères. Ceci est spécifié au niveau de chaque colonne. La "valeur par défaut" spécifiée au niveau de la table s'applique aux nouvelles colonnes ajoutées à la table lorsque la nouvelle définition de colonne ne spécifie pas de jeu de caractères.

MISE À JOUR

Kaii a souligné que ma réponse concernant la "sensibilité à la casse" traite des valeurs stockées dans les colonnes et si les requêtes renverront une valeur à partir d'une colonne contenant une valeur de "New" sera retourné avec un prédicat comme "t.col = 'new'" .

Voir la réponse de Kaii concernant les identifiants (par exemple, les noms de table) étant gérés différemment (par défaut) sous Windows que sous Linux.