2015-08-15 79 views
0

我在MySQL中有一个int(11)类型的列。我想默认值设置为将timestampdiff()设置为MySQL中的默认值

timestampdiff(second,'2000-01-01 00:00:01',current_timestamp()) 

现在,我得到这个错误:

操作失败:同时将SQL脚本添加到数据库时出错。执行: ALTER TABLE DB_NAMETABLE_NAME CHANGE COLUMN timetime INT(11)NULL DEFAULT'timestampdiff(second,\'2000-01-01 00:00:01 \',current_timestamp())';

错误1067:'时间'的默认值无效 SQL声明: ALTER TABLE DB_NAMETABLE_NAME 更改列timetime INT(11)NULL DEFAULT 'TIMESTAMPDIFF(第二,\' 2000-01-01 00:00:01 \ 'CURRENT_TIMESTAMP())'

+0

我觉得戈登答案是你最好的选择。这是不可能的mysql会评估表定义的表达式 - 该表将被定义。 – DaveMac

回答

2

我相信在这里做的唯一途径是制作一个触发器

DELIMITER ; 

CREATE TRIGGER default_time_trigger 
BEFORE INSERT ON TABLE_NAME 
FOR EACH ROW BEGIN 
    IF (NEW.`time` IS NULL) THEN 
     SET NEW.`time` = timestampdiff(second,'2000-01-01 00:00:01',current_timestamp()); 
    END IF; 
END 
;