執行修改語句的時候java代碼裏面沒有設置時間,到了數據庫表裏面居然有時間了的巨大坑

我出現這個問題的時候,是支付接口完成回調,修改訂單狀態,運行了一句sql,這句sql就只有修改訂單狀態,並沒有設置時間。

update a set status = 1 where id = 2;

沒錯,就這麼簡單的一句sql。然後更新到數據庫,居然神奇的發現  ,所有時間的字段都給我設置上去了!!!!!

 

後來又是全局搜索set屬性的代碼,又是找sql語句看看有沒有在語句裏面設置時間,又是打斷點找了半天。才發現,運行修改訂單狀態這句sql之前是沒有設置時間的,運行完了後,時間就有的。

 

然後打開Navicat一看,  

 

 

誰特麼把這個選項勾上了!!!!!害我找半天!

 

 

 

tips: 這個選項勾上的意思表示,修改這張表的時候會去拿系統時間自動set到字段裏面!

 

注意: Navicat 版本不一樣,類型爲datetime是看不到這個選項的,類型爲timestamp又是可以看到這個選項的, 不過都可以在DDL裏面看到。

 

 

最後建議大家,所有的狀態或者是時間,儘量都不要在sql語句裏面直接set,也不要在數據庫建表的時候直接設置。

因爲你做這個項目可能熟悉,可能過久了就會忘記,可能下一個來接手這個項目的人就會找半天浪費時間;在代碼裏面做好註釋,傳參修改是最好的方式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章