2017-10-09 18 views
2

質問の語り方がわかりません。行の値に基づいてSQL制約を追加する

AccountIdとisDefaultWebOrderingPayment列に制約を追加する必要があります。これにより、IsDefaultがfalseのときに多くのAccountIdとIsDefaultWebOrderingPaymentが許可されますが、複数の組み合わせは許可されませんAccountIdとIsDefaultは真です。一意のインデックスを作成するマーティン・スミスのコメントに基づいて

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 
関連する問題