在從表中刪除行之前,是否有任何簡單的方法檢查它是否會違反參照完整性規則?我想從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