欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql多個TimeStamp設(shè)置的方法解讀

 更新時間:2012年11月12日 09:18:45   作者:  
timestamp設(shè)置默認值是Default CURRENT_TIMESTAMP;timestamp設(shè)置隨著表變化而自動更新是ON UPDATE CURRENT_TIMESTAMP;接下來為您詳細介紹
timestamp設(shè)置默認值是Default CURRENT_TIMESTAMP
timestamp設(shè)置隨著表變化而自動更新是ON UPDATE CURRENT_TIMESTAMP

但是由于
一個表中至多只能有一個字段設(shè)置CURRENT_TIMESTAMP
兩行設(shè)置DEFAULT CURRENT_TIMESTAMP是不行的。

還有一點要注意
復(fù)制代碼 代碼如下:

CREATE TABLE `device` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`toid` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'toid',
`createtime` TIMESTAMP NOT NULL COMMENT '創(chuàng)建時間',
`updatetime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后更新時間',
PRIMARY KEY (`id`),
UNIQUE INDEX `toid` (`toid`)
)
COMMENT='設(shè)備表'
COLLATE='utf8_general_ci'
ENGINE=InnoDB;

像這個設(shè)置也是不行的。
原因是mysql會默認為表中的第一個timestamp字段(且設(shè)置了NOT NULL)隱式設(shè)置DEFAULAT CURRENT_TIMESTAMP。所以說上例那樣的設(shè)置實際上等同于設(shè)置了兩個CURRENT_TIMESTAMP。

分析需求
一個表中,有兩個字段,createtime和updatetime。
1 當(dāng)insert的時候,sql兩個字段都不設(shè)置,會設(shè)置為當(dāng)前的時間
2 當(dāng)update的時候,sql中兩個字段都不設(shè)置,updatetime會變更為當(dāng)前的時間

這樣的需求是做不到的。因為你無法避免在兩個字段上設(shè)置CURRENT_TIMESTAMP

解決辦法有幾個:
1 使用觸發(fā)器
當(dāng)insert和update的時候觸發(fā)器觸發(fā)時間設(shè)置。
網(wǎng)上有人使用這種方法。當(dāng)然不懷疑這個方法的可用性。但是對于實際的場景來說,無疑是為了解決小問題,增加了復(fù)雜性。
2 將第一個timestamp的default設(shè)置為0
表結(jié)構(gòu)如下:
復(fù)制代碼 代碼如下:

CREATE TABLE `device` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`toid` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'toid',
`createtime` TIMESTAMP NOT NULL DEFAULT 0 COMMENT '創(chuàng)建時間',
`updatetime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新時間',
PRIMARY KEY (`id`),
UNIQUE INDEX `toid` (`toid`)
)
COMMENT='設(shè)備表'
COLLATE='utf8_general_ci'
ENGINE=InnoDB;

這樣的話,你需要的插入和更新操作變?yōu)椋?
insert into device set toid=11,createtime=null;
update device set toid=22 where id=1;

這里注意的是插入操作的createtime必須設(shè)置為null??!
雖然我也覺得這種方法很不爽,但是這樣只需要稍微修改insert操作就能為sql語句減負,感覺上還是值得的。這也確實是修改數(shù)據(jù)庫最小又能保證需求的方法了。當(dāng)然這個方法也能和1方法同時使用,就能起到減少觸發(fā)器編寫數(shù)量的效果了。
3 老老實實在sql語句中使用時間戳。
這個是最多人也是最常選擇的
表結(jié)構(gòu)上不做過多的設(shè)計:
復(fù)制代碼 代碼如下:

CREATE TABLE `device` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`toid` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'toid',
`createtime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間',
`updatetime` TIMESTAMP NOT NULL COMMENT '最后更新時間',
PRIMARY KEY (`id`),
UNIQUE INDEX `toid` (`toid`)
)
COMMENT='設(shè)備表'
COLLATE='utf8_general_ci'
ENGINE=InnoDB;

這樣你就需要在插入和update的操作的時候?qū)懭刖唧w的時間戳。
insert device set toid=11,createtime='2012-11-2 10:10:10',updatetime='2012-11-2 10:10:10'
update device set toid=22,updatetime='2012-11-2 10:10:10' where id=1
其實反觀想想,這樣做的好處也有一個:current_timestamp是mysql特有的,當(dāng)數(shù)據(jù)庫從mysql轉(zhuǎn)移到其他數(shù)據(jù)庫的時候,業(yè)務(wù)邏輯代碼是不用修改的。

ps:這三種方法的取舍就完全看你自己的考慮了。順便說一下,最后,我還是選擇第三種方法。

相關(guān)文章

  • MySQL?InnoDB鎖類型及鎖原理實例解析

    MySQL?InnoDB鎖類型及鎖原理實例解析

    這篇文章主要為大家介紹了MySQL?InnoDB鎖類型及鎖原理實例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • MySQL權(quán)限變更何時生效

    MySQL權(quán)限變更何時生效

    本文為大家講述了對三種級別權(quán)限的變更后,使其生效的方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪<BR>
    2023-10-10
  • MySQL中LIKE運算符的多種使用方式及示例演示

    MySQL中LIKE運算符的多種使用方式及示例演示

    無論是簡單的模式匹配還是復(fù)雜的模式匹配,LIKE運算符都提供了強大的功能來滿足不同的匹配需求,通過本文的介紹,我們詳細了解了在MySQL數(shù)據(jù)庫中使用LIKE運算符進行模糊匹配的多種方式,感興趣的朋友跟隨小編一起看看吧
    2023-07-07
  • MySQL開發(fā)規(guī)范與使用技巧總結(jié)

    MySQL開發(fā)規(guī)范與使用技巧總結(jié)

    今天小編就為大家分享一篇關(guān)于MySQL開發(fā)規(guī)范與使用技巧總結(jié),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • MySQL數(shù)據(jù)庫 1067錯誤號的解決方法

    MySQL數(shù)據(jù)庫 1067錯誤號的解決方法

    這篇文章主要介紹了MySQL數(shù)據(jù)庫 1067錯誤號的解決方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-12-12
  • MySQL查詢語句過程和EXPLAIN語句基本概念及其優(yōu)化

    MySQL查詢語句過程和EXPLAIN語句基本概念及其優(yōu)化

    在MySQL中我們經(jīng)常會使用到一些查詢語句,如果使用合適的索引會大大簡化和加速查找,下面小編來和大家一起學(xué)習(xí)一下知識
    2019-05-05
  • docker 部署mysql詳細過程(docker部署常見應(yīng)用)

    docker 部署mysql詳細過程(docker部署常見應(yīng)用)

    這篇文章主要介紹了docker 部署mysql之docker部署常見應(yīng)用,本文以docker部署mysql5.7.26為例,通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • mysql自動定時備份數(shù)據(jù)庫的最佳方法(windows服務(wù)器)

    mysql自動定時備份數(shù)據(jù)庫的最佳方法(windows服務(wù)器)

    網(wǎng)上有很多關(guān)于window下Mysql自動備份的方法,可是真的能用的也沒有幾個,有些說的還非常的復(fù)雜,難以操作,這里腳本之家小編為大家分享與整理了幾個軟件方便大家使用
    2016-11-11
  • mysql屬于關(guān)系型數(shù)據(jù)庫嗎

    mysql屬于關(guān)系型數(shù)據(jù)庫嗎

    在本篇文章里小編給大家分享的是一篇關(guān)于mysql是否屬于關(guān)系型數(shù)據(jù)庫的相關(guān)文章,有興趣的朋友們可以參考下。
    2020-06-06
  • 關(guān)于mysql自增id,你需要知道的

    關(guān)于mysql自增id,你需要知道的

    這篇文章主要介紹了關(guān)于mysql自增id的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)mysql,感興趣的朋友可以了解下
    2020-08-08

最新評論