1. 程式人生 > 其它 >MyBatis更新資料時,時間欄位的值被自動更新

MyBatis更新資料時,時間欄位的值被自動更新

這個鍋不是MyBatis背,是設計表的時候,時間欄位沒寫預設值,MySQL會自己加上“根據當前時間戳自動更新”,我們要做的就是把它去掉。

問題描述

先說結論:這個鍋不是MyBatis背,是設計表的時候,時間欄位沒寫預設值,MySQL會自己加上“根據當前時間戳自動更新”,我們要做的就是把它去掉。

這是原始資料

然後去做更新資料,更新的欄位不是時間欄位

再來看一下資料庫,發現時間欄位變了

通過Navicat看了下表設計,這裡勾上了“根據當前時間戳自動更新”

我設計表的時候沒這麼設計

匯出這張表,對比一下SQL,發現多了DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0)

解決方案

  • 如果是建表時,可以通過加預設值解決這個問題。
  • 如果是已建表,可以通過Navicat設計表,去掉“根據當前時間戳自動更新”的勾。或者使用SQL語句更改。
alter table tableName change filedName fieldName timestamp not null default current_timestamp;

以前面的表為例子:

alter table user change updateTime updateTime timestamp not null default '2022-02-04 13:36:00';