加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL-Server:将列定义为互斥

发布时间:2020-12-12 08:44:55 所属栏目:MsSql教程 来源:网络整理
导读:我想起了一个有趣的场景:SQL Server中是否有可能定义一个表,以便通过“标准手段”(约束等),我可以确保两个或更多列是相互排斥的? 我的意思是:我可以确保只有一列包含一个值吗? 解决方法 是的,可以使用CHECK约束: ALTER TABLE YourTableADD CONSTRAINT Co
我想起了一个有趣的场景:SQL Server中是否有可能定义一个表,以便通过“标准手段”(约束等),我可以确保两个或更多列是相互排斥的?

我的意思是:我可以确保只有一列包含一个值吗?

解决方法

是的,可以使用CHECK约束:
ALTER TABLE YourTable
ADD CONSTRAINT ConstraintName CHECK (col1 is null or col2 is null)

根据您的评论,如果许多专栏是排他性的,您可以这样查看:

case when col1 is null then 0 else 1 end +
case when col2 is null then 0 else 1 end +
case when col3 is null then 0 else 1 end +
case when col4 is null then 0 else 1 end
= 1

这说明四列之一必须包含一个值.如果它们都可以为NULL,只需检查< = 1.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读