Как лучше всего запрашивать удаленные записи с помощью временных таблиц SQL Server 2016?
Я смотрю на временные таблицы SQL Server 2016 и не могу найти никакого эффективного способа запросить все исторические записи, которые теперь удалены.
Я предпочитаю не выполнять мягкое удаление или переход к таблице "удаленные элементы", поскольку я чувствую, что с временными таблицами это избыточно.
Может ли это быть достигнуто с помощью временных таблиц эффективным способом?
1 ответ:
Временные таблицы предназначены для того, чтобы дать вам представление о состоянии ваших данных на определенный момент времени, а не представление о состоянии. Пользователям ничего не предоставляется для определения того, как строка попала в таблицу временной истории.
Если вы временно не приостановили / не остановили версионирование системы в вашей временной таблице, то вам просто нужно найти дельту между таблицей истории и активной таблицей. Все оставшиеся строки в таблице истории, которые не имеют соответствующей строки в активном в таблице удаляются строки.
Например, если у вас есть tblCustCalls и он включен для temporal с tblCustCallsHistory, что-то вроде
SELECT * FROM tblCustCallsHistory WHERE ID NOT IN (SELECT ID FROM tblCustCalls)
. В этом примере ID является первичным ключом. Вы можете оптимизировать TSQL, если таблицы очень большие, но базовая концепция не меняется.