我一直无法弄清楚如何在 SQL Server 中实现非常规的多重性,例如 1..3 或 5..15。我已经可以实现 0..1、1..1、0..* 和 1..*。现在我要强制执行一个约束,一个 Trio 实体必须与至少一个 Singer 实体相关联才能将一条记录添加到 TRIOS 表中,但任何 Trio 记录都不能与超过 3 个歌手相关联。
你能帮我吗?
谢谢,鲍勃
我一直无法弄清楚如何在 SQL Server 中实现非常规的多重性,例如 1..3 或 5..15。我已经可以实现 0..1、1..1、0..* 和 1..*。现在我要强制执行一个约束,一个 Trio 实体必须与至少一个 Singer 实体相关联才能将一条记录添加到 TRIOS 表中,但任何 Trio 记录都不能与超过 3 个歌手相关联。
你能帮我吗?
谢谢,鲍勃
您可以使用这样的检查约束来管理最大记录数。
create table trios (trio_id int, person_id int, unique clustered (trio_id, person_id));
go
create function dbo.trio_check (@trio_id int)
returns int
as
begin
declare @result int;
select @result = count(1) from trios where trio_id = @trio_id;
return @result;
end;
go
alter table trios add constraint trio_check1 check (dbo.trio_check(trio_id) <=3);
go