???????由于MySQL目前字段的默認值不支持函數的形式設置默認值是不可能的。
?????? 代替的方案是使用TIMESTAMP類型代替DATETIME類型。
?????? CURRENT_TIMESTAMP :當我更新這條記錄的時候,這條記錄的這個字段不會改變。
?????? CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP :當我更新這條記錄的時候,這條記錄的這個字段將會改變。即時間變為了更新時候的時間。(注意一個UPDATE設置一個列為它已經有的值,這將不引起TIMESTAMP列被更新,因為如果你設置一個列為它當前的值,MySQL為了效率而忽略更改。)如果有多個TIMESTAMP列,只有第一個自動更新。?
??????TIMESTAMP列類型自動地用當前的日期和時間標記INSERT或UPDATE的操作。?
??????如果有多個TIMESTAMP列,只有第一個自動更新。?
??????自動更新第一個TIMESTAMP列在下列任何條件下發生:?
??????列值沒有明確地在一個INSERT或LOAD DATA INFILE語句中指定。?
??????列值沒有明確地在一個UPDATE語句中指定且另外一些的列改變值。(注意一個UPDATE設置一個列為它已經有的值,這將不引起TIMESTAMP列被更新,因為如果你設置一個列為它當前的值,MySQL為了效率而忽略更改。)?
??????你明確地設定TIMESTAMP列為NULL.?
??????除第一個以外的TIMESTAMP列也可以設置到當前的日期和時間,只要將列設為NULL,或NOW()。?
??????另外在5.0以上版本中也可以使用trigger來實現此功能。
??????create table test_time (?
??????id int(11),?
??????create_time datetime?
??????);?
??????delimiter |?
????????????create trigger default_datetime before insert on test_time?
??????for each row?
????????????if new.create_time is null then?
????????????set new.create_time = now();?
??????end if;|?
??????delimiter ;
posted on 2011-05-23 11:57
jadmin 閱讀(92)
評論(0) 編輯 收藏