溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Mysql中update_time時(shí)間字段列的處理和遷移改寫案例

發(fā)布時(shí)間:2022-01-14 17:28:26 來源:億速云 閱讀:134 作者:小新 欄目:數(shù)據(jù)庫

這篇文章主要介紹了Mysql中update_time時(shí)間字段列的處理和遷移改寫案例,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

現(xiàn)象描述

需求:

1.       當(dāng)新增記錄的時(shí)候,數(shù)據(jù)庫自動(dòng)將系統(tǒng)的當(dāng)前時(shí)間set到創(chuàng)建時(shí)間和更新時(shí)間這兩個(gè)字段中。

2.       當(dāng)更新記錄的時(shí)候,數(shù)據(jù)庫只update更新時(shí)間字段的時(shí)間,而不修改創(chuàng)建時(shí)間字段對(duì)應(yīng)的值。

處理方法

Mysql的處理方法:

需求1:創(chuàng)建時(shí)間字段

`creat_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP

需求2:更新時(shí)間字段

`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

說明:即通過字段的默認(rèn)值來處理。

Oracle和DM的處理方法:

在Oracle或者達(dá)夢(mèng)上,對(duì)于需求1(創(chuàng)建時(shí)間字段),處理方式等同;但是對(duì)于需求2(更新時(shí)間字段),則需要通過觸發(fā)器處理。即:

需求1:創(chuàng)建時(shí)間字段

CREAT_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP

需求2:更新時(shí)間字段

UPDATE_TIME TIMESTAMP

改字段無法通過默認(rèn)值,指定屬性。需要為這個(gè)列指定觸發(fā)器:

create or replace trigger your_tablename_update_time

before delete or update on your_tablename

referencing OLD AS "OLD" NEW AS "NEW"

for each row

BEGIN

  /*觸發(fā)器體*/

  IF UPDATING THEN

   :new.update_time = CURRENT_TIMESTAMP;

  END IF;

  exception when others then

null;

END;

/

說明:

1.       實(shí)際上在DM或Oracle這個(gè)體系內(nèi),這個(gè)字段,如果有類似續(xù)期,都是應(yīng)用里面自己維護(hù)的,而且工作量也很小。比如需求2,也只是update的時(shí)候,多update一個(gè)字段而已。

2.       如果原先在Mysql上開發(fā),已經(jīng)為了省事,利用了mysql的對(duì)應(yīng)特性,遷移到DM或Oracle這個(gè)體系的時(shí)候,可以通過觸發(fā)器實(shí)現(xiàn),而不再改任何應(yīng)用邏輯。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Mysql中update_time時(shí)間字段列的處理和遷移改寫案例”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI