mysql 允許在唯一索引的字段中出現多個null值


線上問題:org.springframework.dao.DuplicateKeyException: PreparedStatementCallback; SQL [update fl_table set id = ?, password = ?, email = ? where id = '3583954800']; Duplicate entry ' ' for key 'email'; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry ' ' for key 'email

更新email字段為空時出現錯誤,查數據庫發現表的email字段加了唯一索引,最多有一條為空或者其他值的數據

解決辦法:唯一索引可在索引列插入多次null

email可以有多條email為null的記錄,將沖突的字段設置為null,解決

 

在sql server中,唯一索引字段不能出現多個null值

在mysql 的innodb引擎中,是允許在唯一索引的字段中出現多個null值的。

根據NULL的定義,NULL表示的是未知,因此兩個NULL比較的結果既不相等,也不不等,結果仍然是未知。根據這個定義,多個NULL值的存在應該不違反唯一約束,所以是合理的,在oracel也是如此。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM