【发布时间】:2014-03-22 01:56:31
【问题描述】:
我正在使用 Gridview 显示数据库中的一些数据并提供删除数据的选项但现在我只是通过外键将主键列引用到另一个表。无论如何要删除,现在删除由于冲突而不起作用。
错误:-DELETE 语句与 REFERENCE 约束冲突 “FK_temp1_ProductDetails”。数据库发生冲突 "E:\VISUAL STUDIO 2010\SHOPMOBILE\APP_DATA\SHOPPING.MDF", 表 “dbo.temp1”,列“product_id”。声明已终止。
无论如何要同时从两个表中删除数据。删除查询是
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConflictDetection="CompareAllValues"
ConnectionString="<%$ ConnectionStrings:shoppingConnectionString2 %>"
DeleteCommand="DELETE FROM [ProductDetails] WHERE [Product_id] = @original_Product_id"
OldValuesParameterFormatString="original_{0}"
SelectCommand="SELECT * FROM [ProductDetails]"
UpdateCommand="UPDATE [ProductDetails] SET [Product_name] = @Product_name, [Brand] = @Brand, [Category] = @Category, [Sub_category] = @Sub_category, [Product_info] = @Product_info, [Price] = @Price, [Big_img] = @Big_img, [Quantity] = @Quantity WHERE [Product_id] = @original_Product_id">
<DeleteParameters>
<asp:Parameter Name="original_Product_id" Type="Int32" />
<asp:Parameter Name="original_Product_name" Type="String" />
<asp:Parameter Name="original_Brand" Type="String" />
<asp:Parameter Name="original_Category" Type="String" />
<asp:Parameter Name="original_Sub_category" Type="String" />
<asp:Parameter Name="original_Product_info" Type="String" />
<asp:Parameter Name="original_Price" Type="Int64" />
<asp:Parameter Name="original_Big_img" Type="String" />
<asp:Parameter Name="original_Quantity" Type="Int64" />
</DeleteParameters>
</asp:SqlDataSource>
【问题讨论】:
-
你想做什么?
-
您必须先删除
temp1中引用ProductDetails表的记录,然后才能删除ProductDetails中的记录。以正确的顺序发出单独的命令,或者在temp1表的 FK 上启用CASCADE DELETE。并且请不要在您的项目中留下一个名为temp1的表,这对任何使用该名称的人都没有好处。 -
@Borat 我想从 productdetails 表中删除选定的产品,但我喜欢该表到 temp1,所以上面的代码触发错误,因为 temp1 中存在数据
标签: c# asp.net sql-server-2008