Комментарии 6
Кажется вы изобрели temporal table )
https://github.com/arkhipov/temporal_tables
кажется они изобрели SCD Type2
Так там тоже всё на триггерах)
В psql-hackers когда-то было большое обсуждение патча с добавлением temporal tables согласно ANSI-стандарта. В итоге решили забить, т.к. решили, что это добавит много проблем при редактировании таблиц (удаление/добавление/смена типа поля) при относительно небольшой пользе. К тому же триггеры с таким функционалом каждый может написать под себя, не ограничиваясь стандартным функционалом и синтаксисом.
Вот как раз два примера кастомных реализаций на триггерах)
Данная реализация скорее похожа на аудит, и не похожа на SCD2. Если точнее это SCD4. Трудоемкость получить состояние на определенное время у SCD4 выше чем у SCD2. Насколько я знаю есть несколько расширений для аудита, почему не использовать их?
Отдельный вопрос производительность: насколько использование триггеров замедляет скорость вставки? Проводилось ли тестирование? Какие текущие объемы и нагрузка?
Так же хранения истории ставит вопрос управление жизнью информации, Например, партиционирование и выведение старой информации из системы (удаление и архивирование), тут я этого не вижу.
Можно подойти с другой стороны и сделать историю основной таблицей и только добавлять в неё записи, а для данных использовать view
Event sourcing тоже хорошо подходит для подобных задач, но решение на триггерах тоже имеет смысл в некоторых частных случаях
Использование Postgres-триггеров для исторических таблиц