Одним из требований недавнего проекта, над которым я работал, было ведение истории данных таблицы базы данных как часть контрольного журнала. Моя первая мысль о техническом решении заключалась в использовании триггеров, но после некоторых исследований я узнал о темпоральных таблицах SQL Server (часть ядра SQL Server 2016). Я провел много исследований по этому поводу и убедился, что временные таблицы могут найти хорошее применение.
Подробнее о темпоральных таблицах: Управление временными История таблиц в SQL Server 2016
Однако я хочу, чтобы данные в темпоральных таблицах создавались только при изменении нескольких столбцов.
CREATE TABLE dbo.Persons
(
ID BIGINT IDENTITY(1,1) NOT NULL,
FirstName NVARCHAR(50) NOT NULL,
LastName NVARCHAR(50),
PhoneNumber NVARCHAR(20)
)
Теперь, если я создам временную таблицу поверх нее (SYSTEM_VERSIONING = On), я хочу, чтобы данные вставлялись в временную таблицу только при изменении номера телефона, а не имени и фамилии.