如何解决T-SQL约束,用于检查值是0还是唯一
我正在设计一个数据库,需要由管理员激活员工。新员工注册时,默认情况下其工作站(int)设置为0。但是,我也不允许每个工作站拥有超过1名员工。因此,我在考虑是否有办法允许重复值0,但要强制其他数字唯一。
解决方法
您可以使用部分唯一索引。例如:
create unique index ix1 on employees (workstation) where workstation <> 0;
如:
create table employees (
id int,name varchar(10),workstation int not null
);
create unique index ix1 on employees (workstation) where workstation <> 0;
insert into employees (id,name,workstation) values (1,'Anne',100);
insert into employees (id,workstation) values (2,'Peter',101);
insert into employees (id,workstation) values (3,'Joel',100); -- fails
insert into employees (id,workstation) values (4,'Niko',0);
insert into employees (id,workstation) values (5,'Akina',0); -- succeeds
这是使用传统约束无法实施的约束之一。
请参见db<>fiddle上的运行示例。如您所见,仅Joel,100
被拒绝。插入另外两个workstation
= 0的情况。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。