欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql設(shè)置默認(rèn)值無效問題及解決

 更新時(shí)間:2023年10月18日 10:47:47   作者:檸檬不酸(LemonSour)  
這篇文章主要介紹了mysql設(shè)置默認(rèn)值無效問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

場景

  • 數(shù)據(jù)庫mysql
  • 框架hibernate

原因

根據(jù)hibernate打印出的sql信息可以發(fā)現(xiàn),如果實(shí)體類字段為null,則仍會(huì)insert這個(gè)字段為null,而mysql設(shè)置的默認(rèn)值生效的前提是,

當(dāng)我們insert一條記錄時(shí),我們不指定某字段的值,他才會(huì)自動(dòng)生成默認(rèn)值,

而我們用save的時(shí)候指定該字段的值為null,此時(shí)如果我們mysql設(shè)置的為not null,那么同時(shí)也會(huì)報(bào)錯(cuò)

解決

  • @DynamicInsert(默認(rèn)為true)
  • @DynamicUpdate(默認(rèn)為true)

這兩個(gè)注解是類注解,作用為:

當(dāng)插入/更新一條記錄時(shí),只insert/update改變的信息,而不是將所有字段都update為當(dāng)前的

即,沒有注解時(shí)update的sql為

Hibernate: select student0_.id as id1_0_0_, student0_.default_value as default_2_0_0_, student0_.password as password3_0_0_, student0_.username as username4_0_0_ from user_student student0_ where student0_.id=? Hibernate: update user_student set default_value=?, password=?, username=? where id=?

有注解時(shí)的sql為

Hibernate: select student0_.id as id1_0_0_, student0_.default_value as default_2_0_0_, student0_.password as password3_0_0_, student0_.username as username4_0_0_ from user_student student0_ where student0_.id=?
Hibernate: update user_student set username=? where id=?

可以看到,當(dāng)需要update時(shí)(如果沒有做更改則無論有無注解均不會(huì)執(zhí)行update命令),無注解的將所有字段全都update為當(dāng)前值,有注解的則只update修改值。

在每次update之前,均會(huì)執(zhí)行select查詢出數(shù)據(jù)庫當(dāng)前該字段的狀態(tài)進(jìn)行比較后在執(zhí)行更新操作

網(wǎng)上有人說@DynamicInsert這個(gè)注解的作用是,如果值為null,則不set該值。

從片面的角度來看,這句話是對的,如果我們在save時(shí)指定id,因?yàn)閕nsert對于一條記錄只會(huì)出現(xiàn)一次,在執(zhí)行insert之前,hibernate回去數(shù)據(jù)庫執(zhí)行select查詢,如果查詢不到數(shù)據(jù),那么我們當(dāng)前值的null和他當(dāng)前緩存種的值null是相等的,就認(rèn)為該值沒有修改,在后面執(zhí)行insert時(shí)mysql就會(huì)給該值賦予默認(rèn)值。

如果我們沒指定id,那么他就不會(huì)select,同理,跟緩存中的null相等,在組建insert語句時(shí)就不會(huì)附帶該值

那么有這么一種情況,假若我們save了一個(gè)新記錄,然后又update該記錄,但是在update時(shí),有個(gè)字段我們沒有賦值,其為null,那么跟從數(shù)據(jù)庫select出的數(shù)據(jù)發(fā)生了變化,就會(huì)set null向數(shù)據(jù)庫中,此時(shí)如果我們數(shù)據(jù)庫時(shí)not null的,就會(huì)報(bào)錯(cuò),反之,則會(huì)該字段的值被設(shè)為了null

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • mysql配置文件的使用教程

    mysql配置文件的使用教程

    這篇文章主要介紹了mysql配置文件的使用教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-10-10
  • MySQL備份Shell腳本的實(shí)現(xiàn)

    MySQL備份Shell腳本的實(shí)現(xiàn)

    本文主要介紹了Shell腳本來自動(dòng)備份MySQL數(shù)據(jù)庫,腳本會(huì)備份指定數(shù)據(jù)庫或所有數(shù)據(jù)庫,按日期命名備份文件以防止覆蓋,并自動(dòng)刪除N天前的舊備份以節(jié)省空間,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-03-03
  • 詳解MySQL中的事務(wù)與ACID特性

    詳解MySQL中的事務(wù)與ACID特性

    這篇文章主要為大家介紹了Mysql?中的事務(wù),包括事務(wù)的基本概念和?ACID?特性、事務(wù)的隔離級別和具體實(shí)現(xiàn)方法等,并提供相應(yīng)的代碼示例,希望對大家有所幫助
    2023-05-05
  • sqoop export導(dǎo)出 map100% reduce0% 卡住的多種原因及解決

    sqoop export導(dǎo)出 map100% reduce0% 卡住的多種原因及解決

    這篇文章主要介紹了sqoop export導(dǎo)出 map100% reduce0% 卡住的多種原因及解決,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Mysql IO 內(nèi)存方面的優(yōu)化

    Mysql IO 內(nèi)存方面的優(yōu)化

    這篇文章主要介紹了Mysql IO 內(nèi)存方面的優(yōu)化 的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫、數(shù)據(jù)表的方法

    mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫、數(shù)據(jù)表的方法

    這篇文章主要介紹了mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫、數(shù)據(jù)表的方法,有需要的朋友可以參考一下
    2013-11-11
  • Mysql8主從復(fù)制解讀(兼容低高版本)

    Mysql8主從復(fù)制解讀(兼容低高版本)

    文章詳細(xì)介紹了MySQL主從復(fù)制的理論知識、必要前提、實(shí)現(xiàn)原理、binlog的三種類型以及主從同步的具體步驟,通過配置主庫和從庫的MySQL配置文件,并創(chuàng)建用于主從同步的用戶,可以實(shí)現(xiàn)主從復(fù)制,最后,文章還討論了主從同步的驗(yàn)證和故障切換的方法
    2025-02-02
  • MySQL觸發(fā)器的使用和優(yōu)缺點(diǎn)介紹

    MySQL觸發(fā)器的使用和優(yōu)缺點(diǎn)介紹

    大家好,本篇文章主要講的是MySQL觸發(fā)器的使用和優(yōu)缺點(diǎn)介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下哦,方便下次瀏覽
    2021-12-12
  • mysql 聯(lián)合索引生效的條件及索引失效的條件

    mysql 聯(lián)合索引生效的條件及索引失效的條件

    兩個(gè)或更多個(gè)列上的索引被稱作復(fù)合索引,本文主要介紹了mysql 聯(lián)合索引生效的條件及索引失效的條件,感興趣的可以了解一下
    2021-11-11
  • mysql中的各種約束條件深入探討

    mysql中的各種約束條件深入探討

    在mysql中對編輯的數(shù)據(jù)進(jìn)行類型的限制,不滿足約束條件的報(bào)錯(cuò),本文給大家分享mysql中的各種約束條件,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2024-05-05

最新評論