2015-08-15 49 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 
;