我有4个表a
,b
,c
,d
,我有a
到b
的引用,{{1 {}}到b
到c
(通过外键)。
我正在使用网格视图来加载此表。
如果我尝试删除具有引用的值,那么它会给我一个例外:
The DELETE statement conflicted with the REFERENCE constraint 'FK__b__sc__0519C6AF'. The conflict occurred in database 'dbs', table 'dbo.b', column 'id'. The statement has been terminated.
如果有与之关联的密钥,我不想删除该值。可以c
帮忙吗?
我更新时遇到同样的问题。我正在使用网格视图提供的标准链接进行更新和删除。
任何帮助?
答案 0 :(得分:0)
您可以在RowDeleted
/ RowUpdated
事件中处理execption,因此不会将其抛给应用程序。 e.g。
void GridViewSim_RowDeleted(Object sender, GridViewDeletedEventArgs e)
{
if(e.Exception == null)
{
//Delete was successful - Do Something
}
else
{
// Delete was not successful - Do something else
e.ExceptionHandled = true;
}
}
您也可以在RowDeleting
事件中执行此操作,但是这需要自定义验证来检查子表中是否存在主键,它会更容易,更快,而且我认为没有让外键完成工作并捕获异常,而不是执行检查以预先排除错误,这样做不那么麻烦。