Можно ли в DB2 для IBM i создать триггер, который запускается один раз для каждой инструкции, но может перебирать все затронутые строки, чтобы определить, действительно ли изменились какие-либо значения?
Вариант использования — обновить материализованную таблицу запросов (MQT) с помощью триггера в базовых таблицах. Но мы хотим обновить MQT только в том случае, если значения действительно изменились. Если мы создадим триггер для запуска один раз для каждой строки, мы сможем получить желаемую функциональность. Но если мы вставляем, обновляем и/или удаляем несколько строк одновременно, инструкция «Обновить» выполняется для каждой строки. И в настоящее время для этого MQT в нашей системе требуется около 10 секунд.
Просто надеялся, что есть способ использовать набор триггеров для запуска один раз для каждого оператора, но при этом иметь доступ к значениям до и после каждой отдельной строки. Я не смог найти ничего, что указывало бы на то, возможно это или нет. Хотя я подозреваю, что это не так.
Если есть какой-то другой способ автоматического обновления MQT эффективным образом, я также открыт для этого.