在从表中删除行之前,是否有任何简单的方法检查它是否会违反参照完整性规则?我想从C#赢表单应用程序做到这一点(.NET 3.5)使用SQL Server 2005在删除之前检查参照完整性规则违规
3
A
回答
1
有浮现在脑海中的几个可能的选择:
- 设置级联在数据库中删除,以便删除将始终成功。
- 删除前使用SELECT检查相关记录。这要求应用程序知道约束条件。
- 一个好的域模型(业务类)应该允许应用程序知道相关记录。
- 一个O/R映射器,比如NHibernate,可以用来定义级联删除操作。
- 使用SMO(Microsoft.SqlServer.Smo)检查数据库模式的关系,然后检查现有的相关记录。我不知道这是否可能。
1
你可能会做一个事务中的删除:
try
{
begin transaction
delete row
}
catch SQLException
{
if SQL error indicates referential integrity violation
throw ReferentialIntegrityViolationException
}
finally
{
rollback transaction
}
(假设你永远都不想删除发生在你的代码这一点)
+0
我认为这个想法是确定一个规则是否被违反,而没有实际执行删除的性能成本。此解决方案具有所有性能问题并且没有任何好处;) – 2009-06-06 18:30:59
相关问题
- 1. 在删除记录之前检查规则违规
- 2. 使用@OneToMany删除参照完整性约束违规
- 3. 的MySQL删除表中关于参照完整性规则
- 4. WebApi - 删除事件之前的参照完整性检查
- 5. 检查完整性约束违反SQL之前删除
- 6. 连接表记录上的参照完整性约束违规删除
- 7. 完整性约束违规
- 8. 发生参照完整性约束违规Nullable FK
- 9. 发生了参照完整性约束违规。当更新EF
- 10. 参照完整性约束违规发生mvc4
- 11. 处理参照完整性约束违规正确
- 12. 错误“发生了参照完整性约束违规”
- 13. 完整性违反违规:Magento
- 14. 如何在DQS中配置参照完整性类型规则?
- 15. 完整性约束违规在Magento
- 16. 在ASP .NET中删除之前检查引用完整性违例MVC
- 17. Hibernate/H2 @OneToMany“引用完整性约束违规”删除子?
- 18. 如何处理删除完整性约束违规?
- 19. 附加删除时的完整性约束违规
- 20. 完整性约束违规:NOT NULL检查约束
- 21. MS ACCESS完整性约束违规:NOT NULL检查约束;
- 22. 检查与Doctrine 2的完整性约束违规
- 23. 在删除行之前,有没有办法在MySql中检查约束违规?
- 24. SQLSTATE [23000]:完整性约束违规:1452
- 25. cakephp中的完整性约束违规
- 26. SQLSTATE [23000]:完整性约束违规
- 27. 完整性约束违规 - 无MySQL
- 28. SQLSTATE [23000]:完整性约束违规:1217
- 29. 完整性约束违规:1048 DOCTRINE
- 30. 完整性约束违规:1452 - Magento Multistore
我不知道有任何这样的技术,但如果有这样的技术存在,我想你用来访问数据库的特定技术将是一个非常基本的信息。 – 2009-06-06 18:23:21