Например таблица account обновилась, а в таблице accounthistory обновления нет
Поначалу думали мб связано с долгими транзакциями, а в историю записывалась дата начала транзакции(dt_old), из за чего хронолгия теряется. Но сейчас пишется statement_timestamp и проблема остается
В чем может быть дело?
Скорее всего — вам показалось, что несрабатывает. Другой вариант — кто-то его намеренно отключает.
Показалось????? Это как может показаться что не срабатывает? 😂 там есть еще поля - account state & etc, вот они разные для некоторых ид для последней записи в истории и в актуальной таблице
Да в общем обычное дело. Кажэтся, что несрабатывает — а оно срабатывает. Можэт, методика определения срабатывания некорректная. Можэт, смотрите куда-то нетуда. Мало ли.
проблема старая, проверяли несколько раз и методику проверки и сам триггер, проблема остается
И да, можэте начать разбираться с формулировки этой методики. Глядишь, и мы можэт что подскажэм.
в таблице истории есть поля (id, state, dt) если мы возьмем последние записи для всех аккаунтов (id,state) из истории и сравним с актуальной таблицей, для некоторых аккаунтов актуальный state будет отличаться от последнего стейта из истории, хотя при правильной работе все должно совпадать
Нет, не должно. Последний "по логике" запрос мог происходить до непоследнего. Логический порядок транзакцый не очень совпадает со временем выполнения запросов.
окей, как можно увязать логический порядок и время выполнения?
Нормальных путей нет. Хужэ того, я вообще не уверен, что after trigger в read committed будет на том жэ снапшоте, что и обновление — потому непротиворечивого в цэлом порядка можэт не быть совсем.
Обсуждают сегодня