0

我有一个 MS SQL DB,其中包含一组表,每个表代表一组根据我们的公式计算的变量。所有变量都是具有预定义精度的数字(我们使用数字数据类型,其中 nm 作为整数部分的 n 位数和小数部分的 m 位数)。

我的问题是如何防止异常值或任何违反列大小的无效值?目前我们正在做简单的“try catch”,因为 ADO.net 会为无效值抛出异常,有没有更好的方法?此外,我想在此列中为此异常值设置一个有效值(即:可能为零)。我正在使用 C#3、MSSQL 2000 并使用SqlBulkCopy类插入。

PS:我在询问来自 DB 端或 dotnet 端的任何解决方案

4

3 回答 3

1

我必须同意 MartinK 并在批量插入数据之前进行验证步骤。这也将允许您更好地对该过程进行单元测试。

如果您有多个应用程序向此表添加数据,则存储过程可能是另一种强制验证的解决方案。

但是,另一种选择是将批量插入到对数据类型有更宽松限制的临时/原始表中,然后使用 TSQL 将这些记录按摩到主表中。

于 2009-04-30T02:54:44.850 回答
0

您可以尝试编写 PSQL 触发器/序列来验证您的数据类型关系!

有多少应用程序使用数据库中的相同数据?如果它只是您的应用程序,您不应该考虑将异常逻辑移出中间层。

于 2009-03-13T07:02:07.093 回答
0

您正在描述我希望在应用程序设计中出现的验证和异常处理逻辑,而不是在数据库设计中。为什么它看起来不是最容易为您处理的地方?您使用的是哪种 DAL?

于 2009-04-30T03:03:45.453 回答