У нас есть две таблицы: Events
и EventsLog
. Таблица Events
показана нижеSQL Server 2016 - System_Versioned table - воссоздайте существующую таблицу со значимыми полями SysStartTime и SysEndTime
таблица EventsLog
используется для хранения истории изменений, внесенных в таблицу Events
через триггер UPDATE в таблице Events
.
Поскольку временные таблицы были добавлены в SQL 2016, теперь мы хотим использовать system_versioning, чтобы вести журнал наших изменений в таблице Events
.
Мы настроили новый EventsTemporal
таблицы мигрировать существующие данные и EventsTemporal_History
таблицы работают хорошо, протоколирование исторических записей из EventsTemporal
Однако, мы не можем переопределить SysStartTime
и SysEndTime
. В настоящее время мы можем применить только default
в эти поля при выполнении инструкции INSERT.
Вопрос, используя любой метод, возможно, мы можем переопределить SysStartTime
и SysEndTime
поля таким образом, мы можем вставить значимые datetime2
«S в них, чтобы использовать EventsTemporal_History
таблицы?
Это в настоящее время выглядит так, как выглядит таблица EventsTemporal
. Обратите внимание на поле SysStartTime
, мы хотим, чтобы эти поля заполняли нашей собственной меткой времени и не использовали SQL-запросы по умолчанию.
В идеале мы хотим, чтобы иметь возможность заполнить эти поля как ниже.
Привет @qxg, это здорово, и я ценю ваши усилия! Стол History, как уже упоминалось, хорош, и вы правы, SysEndTime заполнены разумными «правильными» данными, а не 9999-xxx. Проблема в том, что 'SysStartTime' в главной таблице« События » – Skaterhaz
@Skaterhaz извините, я допустил некоторую ошибку. Принцип тот же, изменяя данные периода до включения временного. Вы можете попробовать самостоятельно, пока я обновляю свой ответ. – qxg
У меня нет SQL Server 2016 вручную. Если приведенный выше сценарий не работает, попробуйте повторно создать EventTemporal полностью с добавленным вручную столбцом SysStartTime/SysEndTime. Вы можете проверить текущий сценарий создания EventTemporal для соответствующих столбцов. – qxg