我需要一个DATE列来默认为当前而不是时间戳
我需要它像2014-11-27
CHANGE COLUMN `date` `date` DATE NULL DEFAULT TODAY()
mysql不接受上述内容,因为TODAY()未知。 DATE(),DATE,CURDATE()和CURDATE也不起作用
答案 0 :(得分:1)
在这种情况下你需要使用TRIGGER,DEFAULT子句只能处理常量值:
DELIMITER //
CREATE TRIGGER today BEFORE INSERT ON table
FOR EACH ROW
BEGIN
IF NEW.`date` IS NULL THEN
SET NEW.`date` = NOW();
END IF;
END;
//
DELIMITER ;
答案 1 :(得分:1)
DEFAULT
值必须是常量,不能是函数或表达式。这在documentation中说明。
当列的类型为TIMESTAMP
时,只有一个例外。如果列适合您的设计,请将列的类型更改为TIMESTAMP
(也请阅读initialized and updated)或使用TRIGGER解决方案。