Fecha-hora actual por defecto en un campo con MySQL
MySQL no acepta funciones como valor DEFAULT en una columna, de esta forma no podemos asignar a columnas DATETIME un valor por defecto como la hora actual que obtenemos con NOW(), y el tipo de CURRENT_TIMESTAMP no es compatible con DATETIME.
ALTER TABLE `messages` MODIFY COLUMN `post_datetime` DATETIME DEFAULT NOW();
Así que lo podemos solucionar con un TRIGGER:
DELIMITER $$
CREATE TRIGGER `messages_INSERT` BEFORE INSERT ON `messages`
FOR EACH ROW BEGIN
SET NEW.post_datetime = IFNULL(NEW.post_datetime, NOW());
END;
$$
DELIMITER ;
Este inserta la fecha actual en un campo, siempre y cuando no se haya especificado explícitamente una fecha en la inserción de una nueva fila.
Advertisement
Aún no hay trackbacks