Учитывая следующую таблицу (и выборочные данные):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
, но только когда она имеет тот же SetID
, как и все остальные с Title
.
Просто для того, чтобы отметить, я использую SQL Azure, но мне больше нравится (например, 2008 R2/2012).
Edit:
Пожалуйста, обратите внимание, что я не могу изменить структуру таблицы. Он существует уже таким образом и имеет за собой сложный бизнес-уровень. Если я могу исправить это, как есть, тогда здорово, если нет, то я могу оставить его сломанным.
Я не могу видеть, как вы будете иметь уникальный индекс три столбца, которые позволяют дублировать информацию. Я полагаю, что это может быть исправлено, только если вы добавите, например, столбец идентификаторов, чтобы быть частью индекса, но вам не разрешено изменять таблицу. – gotqn
Я могу добавить столбец, но не могу сделать навязчивые изменения, такие как разделение таблицы на две части. –
@gotqn. Это не должен быть уникальный индекс, это то, что я думаю, будет делать трюк, просто не понял, как! :) –