
[英]How to remove multiple columns that have only one value across all rows in SQL Server 2008 R2
[英]SQL Server 2008: Check constraints that guarantees that only one value in all rows is set to 1 and others are 0
需要在列上构建约束,以确保所有行中只有一个值为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
并为其添加一个唯一约束。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.