2013-08-28 27 views
1

我有一个包含这样的表:SQL表约束,以防止列总计超过100

  • SomeId,诠释PK
  • Item1Weighting,诠释
  • Item2Weighting,诠释
  • Item3Weighting,诠释

我想向表中添加一个约束来防止单个行上三个“加权”列的总数超过总价值为100.

我已经完成了相当多的搜索,找不到任何帮助,因此任何建议都会被感激地收到。

感谢 千电子伏

+2

你可以用触发器做到这一点。你使用的是什么DBMS? – Mansfield

+0

你可以定义一个INSERT或UPDATE的触发器来检查它。 –

+0

我正在使用SQL Server – kmcoulson

回答

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) 
+0

感谢Martin,完美地工作! – kmcoulson