【发布时间】:2011-08-15 17:53:15
【问题描述】:
我想知道大家对于在 INSERTS 和 UPDATES 之前预先检查外键查找与让数据库处理它的看法是什么。如您所知,如果相应的行不存在,服务器将抛出异常。
在 .NET 中,我们总是尽量避免使用异常编码,即不使用引发的异常来驱动代码流。这意味着我们会尝试在运行时检测到潜在错误。
使用 SQL 我看到两个相反的点
1) 不管你是否检查数据库总是会的。这意味着您可能会浪费(多少是主观的)CPU 周期来执行相同的检查两次。这使得人们倾向于让数据库只做这件事。
2) 预检查允许开发人员向调用应用程序提出更多信息异常。可以为每项需要完成的检查返回不同的错误代码,而不是接收通用的“外键违规”。
你有什么想法?
【问题讨论】:
-
在数据库世界中,您很少关心 CPU。这完全是关于内存和磁盘 IO,所以仔细检查 FK 是否存在可能会导致双重磁盘读取(取决于服务器负载以及在插入发生之前页面是否被换出)
标签: sql foreign-keys