У нас есть таблица Person(Id, Name, Type)
и Role(Id, Name
) и привязка M:N
таблица Person_Role(Person_Id, Role_Id)
, что означает «человек может иметь множество ролей».
Все, что мы хотим сделать, - это иметь уникальное ограничение в MS SQL 2008 R2, которое содержит уникальность
(Person.Name, Person.Type, Person.SetOfRoles)
. То есть (Jack, 1, {A,B})
и (Jack, 1, {B})
НЕ являются дубликатами.
Если бы мы могли использовать триггеры предварительной вставки Oracle, это решило бы все.
ВАЖНОЕ ОБНОВЛЕНИЕ: Мы используем MS SQL с Entity Framework и у нас нет точной команды вставки SQL.