oracle 時間欄位自動更新問題

season0891發表於2014-07-14

MySql的timestamp型別跟oracle裡有很大不同 

以前一直用oracle,今天用mysql建表,發現一些問題:

在mysql裡timestamp型別預設情況下為 不允許為空,並且預設值為current_timestamp

最後發現MySql這麼規定是有原因的:

timestamp其實是MYSQL幫我們實現的一個updateTime型別

一條新資料插入時,它會自動被賦值為當前資料庫時間(current_timestamp)

當這條資料的任何一列發生更改時,它的值會自動更新為當前時間(current_timestamp)

一般我們建表的時候都習慣加上,create_time  和 update_time 兩個欄位。方便日後一些分析

oracle裡建表常用的方式如下,更新資料時sql裡顯式的更新update_time欄位
    create_time          TIMESTAMP    default systimestamp,
    update_time          TIMESTAMP,

msyql裡應該這樣,

我們不需再去考慮update_time更新的問題了,每次更新此某行資料時update_time會自動更新

但是DATETIME是無法設定預設值的,也就要求我們insert資料時,必須設定create_time 的值為now()

    create_time          DATETIME not null,
    update_time          TIMESTAMP,


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/90618/viewspace-1218360/,如需轉載,請註明出處,否則將追究法律責任。

相關文章