2015-04-16 140 views
3

我創建了一個如下所示的獨特約束,它工作正常。但是,我想創建一個約束,其中兩個日期之間的productNumber應該是唯一的根據開始日期和結束日期創建唯一約束

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

眼下,它正在列的確切價值,但我想這兩個日期之間。我怎樣才能做到這一點 ?

table

+0

我不認爲這是可能與SQL Server(順便說一句:你爲​​什麼要張貼的文字結果的截圖無厘頭添加示例數據作爲文本僅會?我覺得更容易) –

+2

你可以用觸發器或檢查約束來檢查UDF。 –

+0

@TabAlleman如何使用Check Constraint?你如何獲得預期插入的\更新數據的值到函數中? –

回答

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 
相關問題