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
  1. Aún no hay trackbacks

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.