DELET語句與REFERENCE約束“FK_news_category”衝突,該衝突發生於資料庫“newssystem”,表dbo.news,column 'caId'語句終止
阿新 • • 發佈:2019-01-29
問題
做牛腩新聞釋出系統,當刪除新聞類別表(category)中資料時出現了無法刪除並提示外來鍵衝突的情況。
分析
1、檢視資料表關係,news表和category的主外來鍵相連
2、原因
如果上述聯絡存在,刪除category如果可行,那麼news表中caId中就沒有了資料來源,所以刪除不能通過。
同理,當刪除news 表中的資料時,也會提示不可刪除,引文news和comment通過主外來鍵相連。
那麼,怎樣才能刪除資料呢?
其實原理很簡單,我用兩個圖片來說明這個刪除規則。
(1)允許規則
(2)禁止規則
每張有關聯的表就像樓房,層與層之間有關聯一樣,不拆除最上面一層,下一層是不允許拆除的。上述表關係可以這樣認為:comment是三層,news是二層, category是一層。
解決辦法
1、先刪除comment表資料,再刪除news表資料,最後刪除category表資料。
按照這個步驟操作,還是出現了同樣的問題,不能刪除,還是提示受關係約束
2、刪除關係(主外來鍵),然後表中資料
這樣可以成功刪除資料。 資料刪除了,但是表的聯絡破壞了,資料刪除後,還要重新建立聯絡。