Реализация Soft Delete не выполняется для таблицы с внешними ключами в качестве составного первичного ключа - PullRequest
0 голосов
/ 23 мая 2019

В Sql Server у меня есть таблица со следующей структурой.

(CustomerKey | ProductKey | Количество | CreatedOn | ModifiedOn | DeletedOn) (GUID, GUID, INT, TimeStamp, TimeStamp, TimeStamp)

Первичный ключ (CustomerKey, ProductKey) Индекс

  1. (CustomerKey, ProductKey)
  2. (Customerkey, ProductKey, DeletedOn)

index 2 используется для реализации мягкого удаления, поэтому при удалении записи устанавливается DeletedOn. поэтому в таблице могут быть разные записи с разными датами удаления, но только одна запись с нулевой датой удаления.

эта стратегия работает для таблиц с одним ключом в качестве основного. в рассматриваемой таблице есть составной ключ, причем оба ключа являются внешними ключами.

теперь рассмотрим запись (xxx-xx-xx, гггггггг, 12, '2009-12-1', ноль, ноль)

Я удаляю эту запись. Теперь повторно вставьте для того же клиента и тот же первичный ключ. но поскольку ключи дублируются, т. е. ключ клиента и продукта, его нельзя добавить.

Есть какие-нибудь решения?

...