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.