2010-09-28 119 views
2

我在我的數據庫中有兩個表,t1表的主鍵是uid,t2表是外鍵名desg。現在我想在一個表中刪除或更新這個uid給出錯誤從兩個具有外鍵約束的表中刪除

現在行已更新。第 行中的數據未提交。錯誤 來源:.netSqlclient數據提供者。 錯誤消息:fk_t2_t1.the衝突發生在數據庫數據庫名稱,dbo.t2,列 DESG 更新語句 衝突與參考 約束。已終止 。

當我嘗試刪除時,它會顯示此消息。

執行的SQL語句:從t1 刪除其中uid = 'ABC'

錯誤源:.netSqlclient數據 提供商。錯誤消息:刪除 語句與 參考約束衝突fk_t2_t1.the 衝突發生在數據庫DBname, dbo.t2,列desg中。已終止 。

請告訴我如何做這個更新和刪除。

我是新來的這個領域需要幫助感謝進步。

回答

2

先刪除t2 table a foreign key然後刪除t1 table primary key is uid。這將不會反過來工作

2

您在表t2中有一個或多個子記錄,它們指向要刪除的表t1中的主記錄。在t1中刪除記錄之前,必須刪除t2中的子記錄。

例如:

(1)刪除*從T 2,其中t2.desg = t1.uid; (2)delete * from t1 where t1.uid = UID_TO_BE_REMOVED;

我會推薦閱讀一個很好的參考資料,爲您正在使用的SQL數據庫創建表和執行查詢。

祝你好運!

+0

+1:正確。 'CASCADE DELETE'可以允許刪除父節點上的同步子節點,但這樣做有風險,因爲它允許批量刪除。 – 2010-09-28 18:37:38

+0

不要告訴這對新手 – 2010-09-29 05:48:12

+0

嗨感謝你的指導方針,有沒有辦法做到這一點,在一條線查詢 – user460902 2010-10-01 10:47:59