В Postgresql у меня может быть два типа триггеров: FOR EACH ROW и FOR EACH STATEMENT. Если я делаю триггер FOR EACH ROW, я могу добавить предложение WHERE что-то вроде OLD.* != NEW.*
, чтобы оно срабатывало только в том случае, если что-то действительно изменилось. Есть ли способ сделать что-то подобное с триггерами уровня STATEMENT? Я знаю, что не могу сделать то же самое, поскольку OLD и NEW недоступны, но я подумал, что, возможно, есть способ проверить количество строк, измененных из самой моей функции или тому подобное.
Пример использования: я использую систему postgresql NOTIFY для уведомления моего приложения об изменении данных. В идеале приложение должно получать одно уведомление каждый раз, когда изменяется одна или несколько записей, и вообще не получать уведомления, если данные остаются прежними (даже если выполнялось ОБНОВЛЕНИЕ). С базовым триггером AFTER UPDATE FOR EACH STATEMENT я получаю уведомления каждый раз, когда запускается оператор обновления, даже если он фактически ничего не меняет.