我有一个MS SQL DB包含一组表,每个表代表一个根据我们的公式计算的变量集合。 所有变量都是带有预定义percision的数字(我们使用数字数据类型,n.m为整数部分的n位数和小数部分的m位数)。
我的问题是如何防止异常值或任何违反列大小的无效值?
目前我们正在做简单的“尝试捕获”,因为ADO.net会抛出无效值的异常,有没有更好的方法?
此外,我想为此异常值在此列中设置有效值(即:可能为零)。
我正在使用C#3,MSSQL 2000并使用SqlBulkCopy
类插入。
P.S:我问的是DB端或dotnet端的任何解决方案
答案 0 :(得分:1)
我必须同意MartinK,并在批量插入数据之前进行验证步骤。这样您就可以更好地对此过程进行单元测试。
如果您有多个应用程序向此表添加数据,则存储过程可能是另一种强制执行验证的解决方案。
但是,另一种选择是将批量插入到临时/原始表中,对数据类型有更宽松的限制,然后使用TSQL将这些记录按到主表中。
答案 1 :(得分:0)
您可以尝试编写PSQL触发器/序列来验证您的数据类型关系!
有多少应用程序使用数据库中的相同数据?如果它只是你的应用程序,你不应该考虑将异常逻辑移出中间层。
答案 2 :(得分:0)
您正在描述我希望在应用程序设计中使用的验证和异常处理逻辑,而不是数据库设计。为什么它似乎不是最容易处理它的地方?你使用什么样的DAL?