我创建了一个如下所示的唯一约束,它正常工作。但我想创建一个约束,其中两个日期之间的productNumber应该是唯一的
ALTER TABLE [dbo].[Product] ADD CONSTRAINT U_Product UNIQUE ([ProductNumber],[StartDate],[EndDate])
现在,它正在取列中的确切值,但我希望它在两个日期之间。我怎么能这样做?
答案 0 :(得分:0)
create function dbo.IsProductUnique (@ProductNumber int, @StartDate date, @EndDate date) returns bit as
begin
if exists (
select *
from Product
where ProductNumber = @ProductNumber
and StartDate < @EndDate
and EndDate > @StartDate) return 0
else
return 1 -- Unique
end
go
alter table Product add constraint CK_Product_Unique check (dbo.IsProductUnique(ProductNumber, StartDate, EndDate) = 1)
go