Você não pode definir o padrão para uma coluna de data como o valor de uma função como NOW() ou CURRENT_DATE. A exceção é que você pode especificar CURRENT_TIMESTAMP como o padrão para uma coluna TIMESTAMP.
Portanto, o que você deseja alcançar funcionará no MySQL 5.5 se você adicionar uma TIMESTAMPcoluna em vez de uma DATEcoluna.
As alterações no 5.6.x que permitem a funcionalidade estão documentadas aqui , e citarei o resumo relevante para completar:
A partir do MySQL 5.6.5, as colunas TIMESTAMP e DATETIME podem ser inicializadas e atualizadas automaticamente para a data e hora atuais (ou seja, o timestamp atual). Antes do 5.6.5, isso é verdade apenas para TIMESTAMP e para no máximo uma coluna TIMESTAMP por tabela.
ALTER TABLE `downloads` ADD `date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ;
Crie um TRIGGER que atualize a coluna automaticamente:
ALTER TABLE `downloads` ADD `date` DATETIME NULL; -- date must allow
-- NULLs or default
-- to a special value
DROP TRIGGER IF EXISTS downloads_BI;
DELIMITER //
CREATE TRIGGER downloads_BI
BEFORE INSERT ON downloads FOR EACH ROW
BEGIN
IF (NEW.date IS NULL) THEN -- change the isnull check for the default used
SET NEW.date = now();
END IF;
END//
DELIMITER ;
Você também pode querer criar um valor de atualização, se ele precisar ser atualizado automaticamente na atualização ou quiser evitar valores nulos.
mysql> INSERT INTO downloads (i) VALUES (1); -- I do not set date
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM downloads;
+------+---------------------+
| i | date |
+------+---------------------+
| 1 | 2016-03-22 09:27:52 |
+------+---------------------+
1 row in set (0.00 sec)
Do manual do MySQL 5.5 :
Portanto, o que você deseja alcançar funcionará no MySQL 5.5 se você adicionar uma
TIMESTAMP
coluna em vez de umaDATE
coluna.As alterações no 5.6.x que permitem a funcionalidade estão documentadas aqui , e citarei o resumo relevante para completar:
Verifique esta resposta .
Suas opções são:
Altere o tipo de coluna para TIMESTAMP, como em:
Crie um TRIGGER que atualize a coluna automaticamente:
Você também pode querer criar um valor de atualização, se ele precisar ser atualizado automaticamente na atualização ou quiser evitar valores nulos.