MySQL timestamp主動更新時光分享。本站提示廣大學習愛好者:(MySQL timestamp主動更新時光分享)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL timestamp主動更新時光分享正文
平日表中會有一個Create date 創立日期的字段,其它數據庫均有默許值的選項。MySQL也有默許值timestamp,但在MySQL中,不只是拔出就算是修正也會更新timestamp的值!
如許一來,就不是創立日期了,看成更新日期來應用比擬好!
是以在MySQL中要記載創立日期還得應用datetime 然後應用NOW() 函數完成!
1,TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
在創立新記載和修正現有記載的時刻都對這個數據列刷新
2,TIMESTAMP DEFAULT CURRENT_TIMESTAMP 在創立新記載的時刻把這個
字段設置為以後時光,但今後修正時,不再刷新它
3,TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 在創立新記載的時刻把這個字段設置為0
、主動UPDATE 和INSERT 到以後的時光:
表:
---------------------------------
Table Create Table
------ --------------------------
CREATE TABLE `t1` ( `p_c` int(11) NOT NULL, `p_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=gb2312
數據:
1 2007-10-08 11:53:35
2 2007-10-08 11:54:00
insert into t1(p_c) select 3;update t1 set p_c = 2 where p_c = 2;
數據:
1 2007-10-08 11:53:35
2 2007-10-08 12:00:37
3 2007-10-08 12:00:37
2、主動INSERT 到以後時光,不外不主動UPDATE。
表:
---------------------------------
Table Create Table
------ ---------------------------
CREATE TABLE `t1` ( `p_c` int(11) NOT NULL, `p_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=gb2312
數據:
insert into t1(p_c) select 4;update t1 set p_c = 3 where p_c = 3;
1 2007-10-08 11:53:35
2 2007-10-08 12:00:37
3 2007-10-08 12:00:37
4 2007-10-08 12:05:19
3、一個表中不克不及有兩個字段默許值是以後時光,不然就會失足。不外其他的可以。
表:
---------------------------------
Table Create Table
------ --------------------------
CREATE TABLE `t1` ( `p_c` int(11) NOT NULL, `p_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `p_timew2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ) ENGINE=InnoDB DEFAULT CHARSET=gb2312
數據:
1 2007-10-08 11:53:35 0000-00-00 00:00:00
2 2007-10-08 12:00:37 0000-00-00 00:00:00
3 2007-10-08 12:00:37 0000-00-00 00:00:00
4 2007-10-08 12:05:19 0000-00-00 00:00:00
比擬之下,我的語句少了“on update CURRENT_TIMESTAMP”或多了“default CURRENT_TIMESTAMP”。如斯一來,這個timestamp字段只是在數據insert的時光樹立時光,而update時就不會有變更了。固然,假如你就是想到達這個目標倒也無所謂
1: 假如界說時DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP子句都有,列值為默許應用以後的時光戳,而且主動更新。
2: 假如不應用DEFAULT或ON UPDATE子句,那末它同等於DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP。
3: 假如只要DEFAULT CURRENT_TIMESTAMP子句,而沒有ON UPDATE子句,列值默許為以後時光戳但不主動更新。
4: 假如沒用DEFAULT子句,但有ON UPDATE CURRENT_TIMESTAMP子句,列默許為0並主動更新。
5: 假如有一個常量值DEFAULT,該列會有一個默許值,並且不會主動初始化為以後時光戳。假如該列還有一個ON UPDATE CURRENT_TIMESTAMP子句,這個時光戳會主動更新,不然該列有一個默許的常量但不會主動更新。
換句話說,你可使用以後的時光戳去初始化值和主動更新,或許是個中之一,也能夠都不是。(好比,你在界說的時刻可以指定主動更新,但其實不初始化。)上面的字段界說解釋了這些情形: