验证存储过程参数以强制执行参照完整性约束

时间:2010-02-22 19:40:21

标签: database stored-procedures

最近,我倾向于在实际执行查询之前验证我的存储过程操作查询参数。一个例子是,在更新到表'T'时,如果列'C'具有唯一索引,则Update将不会失败...首先执行“选择唯一索引上的存在”类型在实际更新之前的查询。如果违反了唯一索引,我就会提前捕获错误并返回。

我基本上建立在我通常的乐观锁定策略上,即检查我正在更新的记录是否仍有资格进行更新,即没有改变。我已经进一步测试了如果我要执行更新,就不会违反唯一索引。

问题是,我最近才开始这样做,我无法确定这是否正确,或者我应该让Update处理唯一索引失败。

有没有人在这方面有任何合理的建议?

我也对其他人的参数验证方法感兴趣。

1 个答案:

答案 0 :(得分:2)

对我来说,似乎有很多不必要的工作。

此外,假设您只是更改返回值,您将采用通常为异常的内容并将其转换为返回不同值的存储过程。这可能会导致逻辑错误,这些错误很难跟踪。

<强>加

我对此的另一个想法是,您可能会在业务逻辑或UI级别捕获应该被捕获(或者至少可以更优雅地捕获)的数据库级别的错误。