SQL Server - временная таблица - только выбранные столбцы - PullRequest
0 голосов
/ 25 сентября 2018

Одним из требований недавнего проекта, над которым я работал, было ведение истории данных таблицы базы данных как часть контрольного журнала.Моей первой мыслью о техническом решении было использование триггеров, но после некоторых исследований я узнал о временных таблицах 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), мне нужны данныевставляется во временную таблицу только при изменении номера телефона, а не имени и фамилии.

1 Ответ

0 голосов
/ 25 сентября 2018

К сожалению, это не так.Как сказано в ссылке в вашем сообщении, «системное управление версиями - все или ничего».Честно говоря, ваш первый инстинкт, вероятно, является вашим лучшим вариантом - любой другой способ сделать это (CDC, репликация, системное управление версиями ...) будет собирать больше данных, чем вы хотите, и вам придется свести результаты по факту вниз.

Если вы действительно хотите использовать системное управление версиями, вам просто нужно использовать один из параметров, представленных в предоставленной ссылке: удалить ненужные строки и / или обновить ненужные столбцы до значений NULL.

Я бырекомендуем использовать свой первый инстинкт и использовать триггеры для реализации чего-то вроде медленно изменяющегося измерения типа 4.Это самый простой способ получения нужных вам данных.

...