Мы планируем реализовать битемпоральное решение для нескольких наших таблиц, поскольку они должны записывать как время приложения, так и системное время.
Я знаю, что SQL 2016 имеет встроенную поддержку только компонента системного времени, поэтому мы будем преобразовывать таблицы во временные и модифицировать то, что у нас есть сейчас, чтобы создать полнофункциональное битемпоральное решение.
Мой вопрос о последовательности. Компонент даты окончания системного времени временной таблицы установлен на 9999-12-31 23:59:59.9999999, поэтому я подумал, что было бы неплохо установить дату окончания нашего приложения/действительного времени также на 9999-12- 31 23:59:59.9999999.
Однако меня спросили: «Почему мы не можем просто установить его в NULL, чтобы указать, что период в основной таблице не имеет конца?»
Так почему же? Почему MS решила использовать 9999-12-31 23:59:59.9999999, а не NULL?
Это так же просто, как сделать запросы (потенциально) более легкими для написания? Я предполагаю, что МЕЖДУ лучше работает с двумя фактическими значениями даты, но я не могу думать ни о чем другом.
system versioning = on
? 12.12.2018Period Column
— это просто имя, которое использует MS. Это просто относится к двум столбцам, которые MS создает во всех временных таблицах. На самом деле это не так, это просто соглашение об именах для двух автоматически сгенерированных столбцов. 12.12.2018