1. 程式人生 > >DELET語句與REFERENCE約束“FK_news_category”衝突,該衝突發生於資料庫“newssystem”,表dbo.news,column 'caId'語句終止

DELET語句與REFERENCE約束“FK_news_category”衝突,該衝突發生於資料庫“newssystem”,表dbo.news,column 'caId'語句終止

問題

          做牛腩新聞釋出系統,當刪除新聞類別表(category)中資料時出現了無法刪除並提示外來鍵衝突的情況。

              

分析

            1、檢視資料表關係,news表和category的主外來鍵相連

         

        2、原因

              如果上述聯絡存在,刪除category如果可行,那麼news表中caId中就沒有了資料來源,所以刪除不能通過。

同理,當刪除news 表中的資料時,也會提示不可刪除,引文news和comment通過主外來鍵相連。

         那麼,怎樣才能刪除資料呢?

         其實原理很簡單,我用兩個圖片來說明這個刪除規則。

          (1)允許規則

                

          (2)禁止規則

               

              每張有關聯的表就像樓房,層與層之間有關聯一樣,不拆除最上面一層,下一層是不允許拆除的。上述表關係可以這樣認為:comment是三層,news是二層, category是一層。

解決辦法     

                  1、先刪除comment表資料,再刪除news表資料,最後刪除category表資料。

                  按照這個步驟操作,還是出現了同樣的問題,不能刪除,還是提示受關係約束

                 2、刪除關係(主外來鍵),然後表中資料

                 這樣可以成功刪除資料。  資料刪除了,但是表的聯絡破壞了,資料刪除後,還要重新建立聯絡。

                3、不刪除關係,禁用外來鍵約束(網上這樣說,但未能實現)