国产探花免费观看_亚洲丰满少妇自慰呻吟_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,如果歷史數據多的化,這樣的轉化是非常耗資源的。同時還需考慮值的轉變對業務帶來的影響。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 营口市| 绍兴市| 周口市| 远安县| 民县| 绥滨县| 涿州市| 和硕县| 新野县| 株洲县| 宜城市| 客服| 清镇市| 武汉市| 夏津县| 高淳县| 林芝县| 肇源县| 京山县| 南宁市| 简阳市| 怀远县| 北京市| 乐平市| 晴隆县| 类乌齐县| 乐至县| 铅山县| 稻城县| 呈贡县| 江永县| 宝山区| 临漳县| 同心县| 祁东县| 乌海市| 云霄县| 达州市| 东方市| 琼中| 白河县|