插入时的SQL验证 - 仅允许填充一列或另一列

时间:2011-08-02 09:44:19

标签: sql sql-server validation

我有一个表,允许用户通过绝对值或百分比

指定容差

e.g。他们可以说+/- 1,000,000 或10%

所以我有一个表格,每个值都有一列

确保只指定一个或另一个的最佳方法是什么,而不是两者都

我将在我的UI中添加验证,但也希望由数据库检查

某种自定义约束?

2 个答案:

答案 0 :(得分:5)

A CHECK constraint

ALTER TABLE MyTable WITH CHECK ADD
   CONSTRAINT CK_Mytable_ABSorPercent
          CHECK (ABSValue IS NULL OR PercentValue IS NULL)

这假设您的2列称为ABSValuePercentValue,并且都可以为空。如果它们可以为空(它们应该是),请将支票更改为您的哨兵(N / A)值

答案 1 :(得分:0)

这取决于您选择的查询,但可归结为:

如果yourtable.percentage(column1)不为null,则无法设置yourtable.value(column2)
你必须验证,检查列值是否为null,然后才将值插入另一列。

一个简单的sql命令:

SELECT CASE <column1> WHEN = NULL      THEN column2
                      when <> NULL     then column1

这仅适用于确保从一开始就验证的情况,查询将返回要使用您的值更新的列