2013-04-12 108 views
4

我有一個帶有CustomerID的table_Project(鏈接到tbl_Customer)。在tbl_Customer我有CUSTOMER_ID(如鑰匙)和像電話其他一些信息,電子郵件等DELETE語句與REFERENCE衝突

要在GridView中刪除我用這個的DeleteCommand:

DeleteCommand="DELETE FROM [tbl_Customer] WHERE [Customer_ID] = @Customer_ID" 

但它給我下面的錯誤:

The DELETE statement conflicted with the REFERENCE constraint "Klant_Relatie". The conflict occurred in database "Database_1", table "dbo.tbl_Project", column 'CustomerID'. The statement has been terminated.

但與更新CustomerInfo我沒有得到任何錯誤。我看到了C#的不同解決方案,但我使用.net

任何想法的?

+0

你必須首先刪除所有行關於與同一客戶ID table_Project,因爲這將是具有外鍵關係tbl_Customer –

+0

具有u試圖刪除級聯???? – SenthilPrabhu

回答

4

您的問題是與參照完整性。您無法刪除某個表中某些記錄(table_Project,例如)中某些記錄正在引用的記錄(,來自表tbl_Customer)。 UPDATE不同於DELETE,除非您更新密鑰,在您的案例CustomerIDUPDATE修改記錄,而DELETE刪除記錄。

看看這個例子,

tbl_Customer表

CustomerID CustomerName 
1   Hello 
2   World 

table_Project表

CustomerID ProjectName 
1   Webscripting 
1   Database Maintenance 

你總是可以做表tbl_customer的記錄2任何你想要的因爲沒有記錄t帽子正在引用它。但是在記錄1中,除非表table_Project中的兩條記錄被刪除,否則無法將其刪除。您可以修改列CustomerName但不是CustomerID是仍然被引用。

4

,如果他是一個項目。那是什麼錯誤意味着引用您不能刪除客戶端..

我不明白你

I have seen different solutions for C# but I use .net

但是你在這裏有不同的解決方案:

  1. 變化通過連接到舊的(你要刪除的一個)
  2. 刪除約束所有項目中引用的客戶端(不雷爾Ÿ不錯的選擇)
  3. 刪除客戶機(手動前或使用級聯刪除刪除項目)
2

你可以做的另一件事是在SQL服務器更改外鍵鏈接,以便刪除它級聯。這將導致記錄向下刪除。因此,如果您刪除表a中的記錄,則表b中引用該記錄的任何記錄也將被刪除。