SQL Server 2008中:检查约束保证,只有一个在所有行的值设置为1,其他都是0
-
25-09-2019 - |
题
有必要构建约束在列保证在所有行只有一个值是1,并且所有其它的是0。
解决方案与触发器存在,但我想有内置的东西。
可能这样的事情呢?
解决方案
修改强>
其实我只注意到你是SQL Server 2008上,你可以使用筛选指标为这个
CREATE UNIQUE NONCLUSTERED INDEX UIX ON YourTable (col) where col = 1
<强>原始回答强>
最简单的方法很可能是这一个特殊的PK存储在单独的一排桌子。所述不超过一个排方面可以与检查约束强制执行。
CREATE TABLE OneRowTable
(
lock CHAR(1) DEFAULT 'X' NOT NULL PRIMARY KEY CHECK (lock = 'X'),
OtherTablePK int
);
否则假设你可能具有由正整数的一个id字段,你可以用下面定义
添加计算列case when col=1 then -1 else id end
和唯一约束添加到
不隶属于 StackOverflow