2017-10-09 41 views
2

我甚至不確定如何將問題提出來。這裏是什麼,我試圖完成一個解釋:根據行的值添加SQL約束條件

我需要添加的帳戶ID和isDefaultWebOrderingPayment列的約束,這將使許多ACCOUNTID和IsDefaultWebOrderingPayment時ISDEFAULT是假的,但不允許多臺組合AccountId和IsDefault爲true。

enter image description here

+1

您可能需要一個獨特的過濾索引。 –

+1

可能重複的[SQL可以在表上有一個「條件唯一」約束?](https://stackoverflow.com/questions/3283347/sql-can-i-have-a-conditionally-unique-constraint-on -一張桌子) – Alex

回答

3

根據馬丁·史密斯評論,創建唯一索引的伎倆。

CREATE UNIQUE NONCLUSTERED INDEX uq_AccountId_IsDefaultWebOrderingPayment 
ON PaymentOptions(AccountId, IsDefaultWebOrderingPayment) 
WHERE AccountId IS NOT NULL AND IsDefaultWebOrderingPayment = 1 
GO