根据开始日期和结束日期创建唯一约束

时间:2015-04-16 13:28:24

标签: sql-server unique-constraint

我创建了一个如下所示的唯一约束,它正常工作。但我想创建一个约束,其中两个日期之间的productNumber应该是唯一的

  ALTER TABLE [dbo].[Product]  ADD CONSTRAINT  U_Product UNIQUE ([ProductNumber],[StartDate],[EndDate])

现在,它正在取列中的确切值,但我希望它在两个日期之间。我怎么能这样做?

table

1 个答案:

答案 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