删除前检查参照完整性规则违规

时间:2009-06-06 18:21:14

标签: c# sql-server-2005

在从表中删除行之前,有没有简单的方法来检查它是否会违反参照完整性规则?我想使用SQL Server 2005从C#win表单应用程序(.Net 3.5)中执行此操作。

2 个答案:

答案 0 :(得分:1)

您可以在交易中执行删除操作:

try
{
  begin transaction
  delete row
}
catch SQLException
{
  if SQL error indicates referential integrity violation
    throw ReferentialIntegrityViolationException
}
finally
{
  rollback transaction
}

(假设您从不希望在代码中的此处进行删除)

答案 1 :(得分:1)

有一些潜在的选择可以想到:

  • 在数据库中设置级联删除,以便删除始终成功。
  • 删除前用SELECT检查相关记录。这要求应用程序了解约束条件。
  • 良好的域模型(业务类)应该允许应用程序知道相关记录。
  • 可以使用Oiber R映射器(如NHibernate)来定义级联删除操作。
  • 使用SMO(Microsoft.SqlServer.Smo)检查数据库架构的关系,然后检查现有的相关记录。我不知道这是否可能。