新閣上位機開發——數據庫之SQL語句提交違法數據庫約束的錯誤

最近小夥伴學習數據庫真的是掉頭髮啊,錯誤一堆堆,總也解決不完,其實對於我們老鳥來說,如果認真總結一下,會發現錯誤就那麼幾種,掌握了你就是數據庫老鳥,來吧一起看看都有啥。

 

 

 

《C#程序》的錯誤提示:

 

 

 

《SQLServer數據庫的錯誤》

 

 

 

【問題分析】:以上兩種錯誤都是同一個原因,就是sql語句中“字段的個數”和實際“字段 值”(values裏面的)不一樣導致的,解決方法就是仔細檢查,有多少個字段,然後看給的對應值的個數是不是也是一樣的,以上錯誤就是values後面的字段值,對應最後一個字段DepartmentId缺少了值,添加上即可。
【解決方法】:

 

 

 

 

 


《C#程序》的錯誤提示:

 

 

 

《SQLServer數據庫的錯誤》

 

 

 

【問題分析】:以上兩種相同錯誤“插入重複鍵”,就是因爲在數據表中,某些字段添加了“唯一約束”,這種問題,可以自己打開數據表,肯定有這種情況,比如上面的表中,身份證號就是唯一約束,但是我們從數據庫中,查看數據表Employee發現,這個身份證號(120223199001091218)已經存在了,所以報錯。

【解決方法】:改換成不同的身份號就行了。

 

 

 

 

《C#程序》的錯誤提示:

 

 

 

《SQLServer數據庫的錯誤》

 

 

【問題分析】:以上兩種相同的錯誤,是因爲我們給的values中,有的字段值超過了字段定義的長度,這時候,需要去數據庫中看一下具體的每個字段的長度,然後對比SQL語句中給的值,當然如果有很多字段,也不是每一個都對比,一般就是看看“字符串類型的字段”就可以了,經過查看,在Gender字段中,我們設置的是char(2)兩個字符長度,而我們給的值是“男1”,也就是3個字符,所以超出長度,報錯。

【問題解決】:只需要改成“男”就可以了。

 

 

 

 

 

《C#程序》的錯誤提示:

 

 

 

《SQLServer數據庫的錯誤》

 

 

【問題分析】:凡是提示“CHECK約束衝突”的,一定要檢查當前表中哪些字段添加了CHECK約束,然後根據約束要求,去核對values中的字段值,比如我們這個表中Gender性別列增加了如下約束:

 

 

右鍵點擊表名稱,選擇“設計”,然後在表的設計狀態下,任何地方再次右鍵,選擇CHECK約束:

 

 

彈窗如下窗口:

 

 

發現,Gender的約束是“男”或“女”,而在上面的SQL語句中,我們寫了“非”,所以報錯。類似的問題,比如你給某一個字段設置成30-50範圍的值,而你的數據不在這個範圍,同樣也是這個錯誤。

【問題解決】:只需要把values中的“非”改成“男”就可以了。

 

 

 

 

《C#程序》的錯誤提示:

 

 

 

《SQLServer數據庫的錯誤》

 

 

【問題分析】:以上兩個錯誤是一樣的,非常明確的提示了是“Foreign  key”約束,並且告訴了是表“Department”,對應的字段是“DepartmentId”。這樣的話,我們就去核對一下,當前SQL語句中最後一個字段19對應的是DepartmentId,所以,我們去Department表中,看看所有的DepartmentId列中,有沒有這個19,打開數據表如下:

 

 

發現確實沒有19,這樣的話主鍵表裏面沒有的數據,從表中是不能使用的,這個也是外鍵約束的基本要求。

【問題解決】:只要把19改成,數據表中10-15中的值就可以了。

【特別提示】:只要是“約束衝突”,檢查的方法都一樣,看清楚錯誤提示的是什麼類型的約束,然後去表中查看,仔細覈對即可。

以上問題,只要用數據庫,其實不管是老鳥還是新手,都會遇到,而在這裏如何快速解決纔是我們今天這篇文章的關鍵。

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