有關MYSQL建庫時有關時間戳字段的問題

由於要做一個項目的後臺,需要設計數模並建庫,用的是PowerDesigner,數據庫用的是MySQL5.5 ,在建物理模型的時候,用到了timestamp這個類型的字段(時間戳),一個是創建時間,一個是修改時間,建庫成功後發現一個問題,怎麼讓CREATED字段在創建時生成時間戳,而ALTER字段在修改時自動生成時間戳呢?上網一查,果然也有一些小夥伴和我一樣遇到了這樣的問題,下面是解決辦法:

MySQL 5.7之前的版本,如果直接這樣寫是會報錯的:

CREATE TABLE `test_table` (  
`id` INT( 10 ) NOT NULL,  
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,  
`update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP  
) ENGINE = INNODB; 

有網友提供了這樣的解決辦法

CREATE TABLE `test_table` (  
`id` INT( 10 ) NOT NULL,  
`create_time` TIMESTAMP NOT NULL DEFAULT 0,  
`update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP  
) ENGINE = INNODB; 
  • 這樣寫的結果就是,修改時間在創建一條記錄的時候也會初始化(其實也沒毛病)

這時候插入和修改一條語句是這麼寫的

INSERT INTO test_table (id, create_time, update_time) VALUES (1, NULL, NULL); 
INSERT INTO test_table (id, update_time) VALUES (1, NULL);  
UPDATE test_table (id) VALUES (2); 

MySQL5.7之後可以直接這麼寫了

CREATE TABLE `test_table` (  
`id` INT( 10 ) NOT NULL,  
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,  
`update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP  
) ENGINE = INNODB;

事情就這麼解決了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章