国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL 8.0 timestamp引起的問題怎么解決

2024-07-24 12:33:42
字體:
來源:轉載
供稿:網友
  今天業務反饋了一個問題,modify_time字段不允許為null,而業務反饋這個字段是設置了默認值的,具體的業務報錯信息如下所示:
  
  explicit_defaults_for_timestamp=OFF,表示使用默認的timestamp默認格式;timestamp類型的默認格式是什么樣的呢?
 
  1、和其它字段類型不一樣,這個字段默認為not null.而且不允許設置default null.
 
  2、第一列timestamp字段,如果不強制指定默認值或on update屬性的話,就會默認設為DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP。
 
  3、非第一列timestamp字段,如果不強制指定默認值,DEFAULT ‘0000-00-00 00:00:00’
 
  4、往該列中插入null值,會自動轉化為默認值;
 
  explicit_defaults_for_timestamp=ON,則關閉timestamp default的特性:
 
  1、如果沒有被顯示指定not null,則默認為null;
 
  2、默認值也會是null而非CURRENT_TIMESTAMP;
 
  3、如果指定了not null屬性,inset式不指定該字段的值,strict sql_mode下,會報錯。非strict sql_mode下插入’0000-00-00 00:00:00’;
 
  需要仔細考慮下面的場景:
 
  1、timestamp not null default CURRENT_TIMESTAMP,當explicit_defaults_for_timestamp由0轉為1時會帶來什么業務影響?
 
  這樣的轉化,如果該timestamp字段有默認值,會造成原本insert 該timestamp字段value為null的語句會插入失敗,影響業務;
 
  2、datetime default null 轉成 timestamp default CURRENT_TIMESTAMP,又會帶來什么業務影響呢?
 
  做這樣的字段轉化,會把原本該字段為null的值都轉化為CURRENT_TIMESTAMP,如果歷史數據多的化,這樣的轉化是非常耗資源的。同時還需考慮值的轉變對業務帶來的影響。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 高唐县| 邵阳县| 南投市| 恭城| 平罗县| 郴州市| 兴义市| 新竹市| 城市| 沅江市| 垣曲县| 迁安市| 安庆市| 通榆县| 恩平市| 东方市| 长泰县| 五家渠市| 炉霍县| 惠安县| 双桥区| 黄浦区| 玛纳斯县| 柳林县| 阳朔县| 屏东市| 大厂| 岐山县| 桐柏县| 彭阳县| 郁南县| 兴仁县| 汉阴县| 庐江县| 镇江市| 敦煌市| 鄱阳县| 玛沁县| 普陀区| 东丰县| 佛教|