Как лучше всего запрашивать удаленные записи с помощью временных таблиц SQL Server 2016?


Я смотрю на временные таблицы SQL Server 2016 и не могу найти никакого эффективного способа запросить все исторические записи, которые теперь удалены.

Я предпочитаю не выполнять мягкое удаление или переход к таблице "удаленные элементы", поскольку я чувствую, что с временными таблицами это избыточно.

Может ли это быть достигнуто с помощью временных таблиц эффективным способом?

1 6

1 ответ:

Временные таблицы предназначены для того, чтобы дать вам представление о состоянии ваших данных на определенный момент времени, а не представление о состоянии. Пользователям ничего не предоставляется для определения того, как строка попала в таблицу временной истории.

Если вы временно не приостановили / не остановили версионирование системы в вашей временной таблице, то вам просто нужно найти дельту между таблицей истории и активной таблицей. Все оставшиеся строки в таблице истории, которые не имеют соответствующей строки в активном в таблице удаляются строки.

Например, если у вас есть tblCustCalls и он включен для temporal с tblCustCallsHistory, что-то вроде SELECT * FROM tblCustCallsHistory WHERE ID NOT IN (SELECT ID FROM tblCustCalls). В этом примере ID является первичным ключом. Вы можете оптимизировать TSQL, если таблицы очень большие, но базовая концепция не меняется.