Уникальный ключ SQL, если не удален

У меня есть таблица, как показано ниже:

+----------+---------+
| ParentId | ChildId |
+----------+---------+

Это отношение один-ко-многим (один родитель, несколько дочерних), на данный момент первичным ключом является идентификатор дочернего элемента, поскольку дочерний элемент может отображаться только на одного родителя (пока что все довольно просто).
Мой вопрос приходит сейчас, но я хочу добавить дополнительный столбец, как показано ниже:

+----------+---------+---------+
| ParentId | ChildId | Deleted |
+----------+---------+---------+

Таким образом, ситуация заключается в том, что мне нужно отслеживать, по причинам аудита, сопоставления удаленных родителей, я думал, что нужно сделать Child Id уникальным, если Удалено - это ложь. Вопрос в том, как мне этого добиться? Возможно ли создать вторичную таблицу, которую я использовал для архивирования удаленных записей? Можно ли предположить, что я могу достичь этого или другого подхода?

1 ответ

Решение

Я думаю, что это ваш вопрос:

я думал сделать Child Id уникальным, если Deleted - это ложь. Вопрос в том, как мне этого добиться?

Если это так, вы можете использовать отфильтрованный уникальный индекс:

create unique index unq_t_parent_child on t(parent, child)
    where isdeleted = 0;
Другие вопросы по тегам