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,