4

我有一个带有 CustomerID 的 table_Project(链接到 tbl_Customer)。在 tbl_Customer 我有 Customer_ID(作为密钥)和一些其他信息,如电话、电子邮件等。

要从 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

有任何想法吗?

4

3 回答 3

5

如果项目引用了客户,则不能删除他。这就是错误的含义。

我不明白你的

我见过不同的 C# 解决方案,但我使用 .net

但是您在这里有不同的解决方案:

  1. 更改链接到旧项目的所有项目引用的客户端(您要删除的项目)
  2. 丢弃约束(不是很好的选择)
  3. 在删除客户端之前删除项目(手动或使用级联删除)
于 2013-04-12T12:06:17.940 回答
4

您的问题与参照完整性有关。您不能删除当前被某个表(例如)中的某些记录引用的记录(从表tbl_Customer中)。在您的情况下,除非您正在更新密钥,否则与. 在删除记录时修改记录。table_ProjectUPDATEDELETECustomerIDUPDATEDELETE

看看这个例子,

tbl_Customer 表

CustomerID  CustomerName
1           Hello
2           World

table_Project 表

CustomerID  ProjectName
1           Webscripting
1           Database Maintenance

2您可以随时在表记录上做任何您想做的事情,tbl_customer因为没有引用它的记录。但是在记录1中,除非删除表中的两条记录,否则您无法删除它table_Project。您可以修改列CustomerName,但CustomerID如果仍然被引用,则不能。

于 2013-04-12T12:10:29.583 回答
2

您可以做的另一件事是在 SQL Server 中更改外键链接,以便在删除时级联。这将导致记录向下删除。因此,如果您删除表 a 中的记录,则表 b 中引用该记录的任何记录也将被删除。

于 2013-04-12T13:53:30.583 回答