如下表(和樣本數據):SQL Server的條件唯一索引
PK | ClientID | SetID | Title
-----------------------------
P1 | C1 | S1 | Title1
P2 | C1 | S1 | Title1
P3 | C2 | S2 | Title1
P4 | C2 | S2 | Title1
P3 | C1 | S3 | Title2
P5 | C1 | S3 | Title2
假設Set
屬於Client
,我可以有一個獨特的索引約束標題中的客戶端內是唯一的,除了與它是同一組中的兄弟姐妹。
因此,例如,我可以有Title1
兩個Clients
但不是兩個在一個Client
。現在爲Client1
,我想要有Title1
的第二條記錄,但只有當它與所有其他Title
的SetID
相同時。
需要注意的是,我使用的是SQL Azure,但我更感興趣的是更普遍的(例如2008 R2/2012)。
編輯:
請注意,我不能改變表的結構。它已經存在,並且背後有一個複雜的業務層。如果我可以解決這個問題,那麼很好,如果不是的話,那麼我可以把它打破。
我看不出你如何去擁有的唯一索引三列允許重複信息。我想這可能會解決只有當你添加例如標識列爲了成爲索引的一部分,但你不能改變表。 – gotqn
我可以添加一列,但不能進行侵入式更改,例如將表分成兩部分。 –
@gotqn。它不一定是一個獨特的索引,這正是我所想的會做的伎倆,只是沒有想出如何! :) –