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

Chr*_*sCa 2 sql sql-server validation

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

例如,他们可以说+/- 1,000,000或10%

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

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

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

某种自定义约束?

gbn*_*gbn 5

一个CHECK约束

ALTER TABLE MyTable WITH CHECK ADD
   CONSTRAINT CK_Mytable_ABSorPercent
          CHECK (ABSValue IS NULL OR PercentValue IS NULL)
Run Code Online (Sandbox Code Playgroud)

假设您的2列被调用ABSValue并且都可以为PercentValue空.如果它们可以为空(它们应该是),请将检查更改为您的标记(N/A)值

  • 可能添加'.. AND(绝对值不为空或百分比值不为空)'以指定必须设置一个且只能设置一个. (2认同)