程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL timestamp主動更新時光分享

MySQL timestamp主動更新時光分享

編輯:MySQL綜合教程

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子句,這個時光戳會主動更新,不然該列有一個默許的常量但不會主動更新。

    換句話說,你可使用以後的時光戳去初始化值和主動更新,或許是個中之一,也能夠都不是。(好比,你在界說的時刻可以指定主動更新,但其實不初始化。)上面的字段界說解釋了這些情形:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved