我有一个table_Project,其中包含一个CustomerID(链接到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
有什么想法吗?
答案 0 :(得分:5)
如果项目引用了客户端,则无法删除客户端。这就是错误的含义..
我不明白你的
我见过C#的不同解决方案,但我使用.net
但是你有不同的解决方案:
答案 1 :(得分:4)
您的问题与参照完整性有关。您无法删除某个表中某些记录(表tbl_Customer
,例如)当前正在引用的记录( from table table_Project
) 。 UPDATE
与DELETE
不同,除非您要更新密钥,在您的情况CustomerID
中。 UPDATE
在DELETE
删除记录时修改记录。
看看这个例子,
tbl_Customer table
CustomerID CustomerName
1 Hello
2 World
table_Project表
CustomerID ProjectName
1 Webscripting
1 Database Maintenance
您可以随时在表2
的记录tbl_customer
上执行任何操作,因为没有记录引用它。但是在记录1
中,除非删除表table_Project
中的两个记录,否则无法删除它。您可以修改列CustomerName
,但如果仍在引用,则不会CustomerID
。
答案 2 :(得分:2)
您可以做的另一件事是在SQL服务器中更改外键链接,以便在删除它时级联。这将导致记录向下删除。因此,如果删除表a中的记录,表b中引用该记录的任何记录也将被删除。