2013-11-21 45 views
1

約束是否可以有絕對的值作爲約束在SQL 2008年事情是這樣的:ABS在SQL

ALTER TABLE [dbo].[myTable] WITH NOCHECK ADD 
CONSTRAINT [IX_Blah] UNIQUE NONCLUSTERED 
(
    ABS([ID_1]), 
    [ID_2] 
) ON [PRIMARY] 

在我的桌子ID_1可以是負的。所以我需要確保我沒有記錄

ID_1 ID_2 
    1  1 
-1  1 

他們應該被認爲是相同的,不被允許。

謝謝。

+1

這是那些時候,我會說試試,找出之一。 – xQbert

+0

我試過了,我不能像發佈一樣完成,所以我說「類似」。也許有工作? – chibis

回答

4

我假設你已經嘗試過它並得到一個錯誤。

不,唯一約束不能包含公式。但是,您可以,對一個計算列的唯一約束:

ALTER TABLE myTable 
ADD ID_3 AS ABS(ID_1) 

ALTER TABLE [myTable]ADD 
CONSTRAINT [IX_Blah] UNIQUE NONCLUSTERED 
(
    [ID_3], 
    [ID_2] 
) 
+0

謝謝,這聽起來像個好主意。但是我有限制。我無法將字段添加到此表中。還有什麼我可以做的? – chibis

+0

不是我知道的唯一約束。您必須通過觸發器或執行插入的應用程序來執行它。 –