我在做項目的時候遇到這樣的問題。
數據庫設置了兩張表,一張是主鍵表,另一張是外鍵表。
問題就來了,如果我在主鍵表中刪除一行記錄,由於外鍵表存在相應的記錄,
數據庫就會拒絕執行這條 DELETE 查詢。
DELETE 語句與 REFERENCE 約束"FK_ipaddress_serverlib"沖突。該沖突發生於數據庫"XiangLongDatabase",表"dbo.ipaddress", column 'serverid'。
我用的方法是先 SELECT 外鍵表的外鍵列有沒有與主鍵列記錄相符的記錄,
然後刪除外鍵表的記錄再刪除主鍵表的記錄。
這就導致數據庫會執行一系列的 SELECT 語句,然後再 DELETE 。
有沒有更加好的解決方案?
既然有約束關系,你就要遵守這個規則,刪除時,要先刪從表,再刪主表,添加時,先主表,後從表