В Sql Server у меня есть таблица со следующей структурой.
(CustomerKey | ProductKey | Количество | CreatedOn | ModifiedOn | DeletedOn)
(GUID, GUID, INT, TimeStamp, TimeStamp, TimeStamp)
Первичный ключ (CustomerKey, ProductKey)
Индекс
- (CustomerKey, ProductKey)
- (Customerkey, ProductKey, DeletedOn)
index 2 используется для реализации мягкого удаления, поэтому при удалении записи устанавливается DeletedOn. поэтому в таблице могут быть разные записи с разными датами удаления, но только одна запись с нулевой датой удаления.
эта стратегия работает для таблиц с одним ключом в качестве основного. в рассматриваемой таблице есть составной ключ, причем оба ключа являются внешними ключами.
теперь рассмотрим запись
(xxx-xx-xx, гггггггг, 12, '2009-12-1', ноль, ноль)
Я удаляю эту запись. Теперь повторно вставьте для того же клиента и тот же первичный ключ. но поскольку ключи дублируются, т. е. ключ клиента и продукта, его нельзя добавить.
Есть какие-нибудь решения?