INSERT 語句與 FOREIGN KEY 約束"XXX"沖突。該沖突發生於數據庫"XXX",表"XXX", column 'XXX。


       做牛腩新聞發布系統的時候遇到了這樣的問題:INSERT語句與FOREIGN KEY約束“KF_news_category”沖突。該沖突發生於數據庫“newsystem”,表“dbo.category”,column‘id’。

       運行程序添加不進去數據,就在SqlServer中直接添加數據,只能添加category表中的數據,news和comment表中無法插入數據,向news表或者comment表中添加數據時,就提示INSERT語句與FOREIGN KEY約束“KF_news_category”沖突。該沖突發生於數據庫“newsystem”,表“dbo.category”,column‘id’。





情景復現:

數據庫:

牛腩新聞發布系統中共包含三個表:category表(類別表),news表(新聞表),comment表(內容表)。




每個表中的字段:

category表:

                    id(類別id)

                    name(類別名)

            

news表:

                     id(新聞id)

                     title(新聞標題)

                     content(新聞內容)

                     createtime(創建時間)

                     caId(類別id——該條新聞屬於哪個類別)

  

                    

comment表:

                     id(評論id)

                     content(評論內容)

                     createtime(評論時間)

                     userIp(評論人的IP)

                     newsId(所評論新聞的id)



三表關系

category表中的id是news表的外鍵(在news表中使用的字段是caId),news表中的id是comment表的外鍵(在comment表中使用的字段是newsId)

       

原因:

(1)news表中的caId在category表中不存在

           (2)數據庫關系圖有主外鍵設置錯誤。

理論解析:

外鍵約束:

news表存在一個字段caId,有外鍵約束,引用於category表的主鍵Id,那么在向news表插入數據時,字段caId必須為category表中Id已經存在的值,如果向中存放一個category中沒有的值,則會報違反外鍵約束。

數據庫關系圖兩種情況分析:

情況一:


      上圖表明了category表的主鍵id在news表中是外鍵,而news表中的id則是comment表中的外鍵。

情況二:


      上圖則表示category的Id,必須和news表中的id一致,這樣才能添加數據。

總結:  

        在設計數據庫關系圖的時候,要注意兩個表之間的連線是否正確。同時在插入數據時注意外鍵約束,這樣就不會出現這樣的錯誤了。




免責聲明!

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



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