我有一个表,允许用户通过绝对值或百分比
指定容差e.g。他们可以说+/- 1,000,000 或10%
所以我有一个表格,每个值都有一列
确保只指定一个或另一个的最佳方法是什么,而不是两者都
我将在我的UI中添加验证,但也希望由数据库检查
某种自定义约束?
答案 0 :(得分:5)
ALTER TABLE MyTable WITH CHECK ADD
CONSTRAINT CK_Mytable_ABSorPercent
CHECK (ABSValue IS NULL OR PercentValue IS NULL)
这假设您的2列称为ABSValue
和PercentValue
,并且都可以为空。如果它们可以为空(它们应该是),请将支票更改为您的哨兵(N / A)值
答案 1 :(得分:0)
这取决于您选择的查询,但可归结为:
如果yourtable.percentage(column1)不为null,则无法设置yourtable.value(column2)
你必须验证,检查列值是否为null,然后才将值插入另一列。
一个简单的sql命令:
SELECT CASE <column1> WHEN = NULL THEN column2
when <> NULL then column1
这仅适用于确保从一开始就验证的情况,查询将返回要使用您的值更新的列