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.

Anuncios
  1. Makaleniz için teşekkür ederim

  1. 5/07/14

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: