sql >> Base de Datos >  >> RDS >> Mysql

Error de mysql datetime DEFAULT CURRENT_TIMESTAMP

El DEFAULT CURRENT_TIMESTAMP compatibilidad con DATETIME (tipo de datos) se agregó en MySQL 5.6.

En 5.5 y versiones anteriores, esto solo se aplicaba a TIMESTAMP (tipo de datos) columnas.

Es posible usar un BEFORE INSERT desencadenar en 5.5 para asignar un valor predeterminado a una columna.

 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 distinción entre mayúsculas y minúsculas (de consultas contra valores almacenados en columnas) se debe a la collation utilizado para la columna. Intercalaciones que terminan en _ci son insensibles a mayúsculas y minúsculas. Por ejemplo latin1_swedish_ci no distingue entre mayúsculas y minúsculas, pero latin1_general_cs distingue entre mayúsculas y minúsculas.

La salida de SHOW CREATE TABLE foo mostrará el juego de caracteres y la intercalación para las columnas de tipo de carácter. Esto se especifica en un nivel por columna. El "predeterminado" especificado en el nivel de la tabla se aplica a las nuevas columnas agregadas a la tabla cuando la definición de la nueva columna no especifica un juego de caracteres.

ACTUALIZAR

Kaii señaló que mi respuesta con respecto a la "distinción de mayúsculas y minúsculas" se ocupa de los valores almacenados dentro de las columnas, y si las consultas devolverán un valor de una columna que contiene un valor de "New" se devolverá con un predicado como "t.col = 'new'" .

Ver la respuesta de Kaii sobre identificadores (por ejemplo, los nombres de las tablas) se manejan de manera diferente (por defecto) en Windows que en Linux.