SQL表约束以防止列总数超过100

时间:2013-08-28 12:31:17

标签: sql sql-server constraints check-constraints

我有一个包含这样的列的表:

  • SomeId,Int PK
  • Item1Weighting,Int
  • Item2Weighting,Int
  • Item3Weighting,Int

我想在表格中添加一个约束,以防止单行上三个“加权”列的总和超过总值100。

我已经做了很多搜索,找不到任何帮助,所以我会非常感激地收到任何建议。

由于 千电子伏

1 个答案:

答案 0 :(得分:1)

您可以在不诉诸触发器的情况下以声明方式执行此操作。

CREATE TABLE T
(
SomeId  Int PRIMARY KEY,
Item1Weighting  Int,
Item2Weighting  Int,
Item3Weighting  Int,
CONSTRAINT CK_WeightingNotOver100 
    CHECK ((ISNULL(Item1Weighting,0) + 
            ISNULL(Item2Weighting,0) + 
            ISNULL(Item3Weighting,0)) <= 100)
)

或者将其追溯添加到现有表格

ALTER TABLE T
ADD CONSTRAINT CK_WeightingNotOver100 
    CHECK ((ISNULL(Item1Weighting,0) + 
            ISNULL(Item2Weighting,0) + 
            ISNULL(Item3Weighting,0)) <= 100)