天天看點

oracle時間戳不自動更新,oracle 時間字段自動更新問題

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,