Запуск Postgres 9.6 на AWS Aurora
У меня есть таблица, где я записываю историю. Я использую триггеры для изменения ОБНОВЛЕНИЙ и УДАЛЕНИЙ на ВСТАВКИ и добавляю столбец операций с датой для регистрации изменений.
Проблема в некотором коде ETL, который я не контролирую TRUNCATES и повторно заполняет таблицу. Что я хочу, так это механизм переопределения TRUNCATE и «мягкого» усечения любых активных строк. Postgres поддерживает только триггеры INSTEAD OF для представлений, и вы не можете иметь триггер TRUNCATE для представлений. Так что нет - нет триггера INSTEAD OF TRUNCATE.
Что я сделал:
Триггер BEFORE TRUNCATE для перемещения всех данных в таблице в новую таблицу
Позвольте усеченному усеченному запуску
Триггер AFTER TRUNCATE для перемещения всех данных назад и вставки новых строк мягкого усечения.
Я бы предпочел решение, при котором мне не нужно перемещать столько данных.
Я не владею кодом ETL, и чтобы заставить разработчиков ETL изменить свой код, потребовалось бы поддержать новый проект, протестировать ...