Вы можете использовать операторы «повысить уведомление» внутри функции триггера для его отладки. Отладка триггера, который вообще не вызывается, - другая история.
Если вы добавите «исключение повышения» внутри функции триггера, сможете ли вы по-прежнему делать вставки / обновления?
Кроме того, если ваш тест обновления происходит в той же транзакции, что и тест вставки, now () будет таким же (поскольку он рассчитывается только один раз для транзакции), и, следовательно, обновление, похоже, ничего не даст. Если это так, либо выполните их в отдельных транзакциях, либо, если это модульный тест, и вы не можете этого сделать, используйте clock_timestamp ().
У меня есть модульный тест, который зависит от времени между транзакциями, поэтому в начале модульного теста у меня есть что-то вроде:
ALTER TABLE documents
ALTER COLUMN modification_time SET DEFAULT clock_timestamp();
Затем в триггере используйте "set mod_time = default".
Так что обычно он не выполняет дополнительных вычислений, но во время модульного теста это позволяет мне делать вставки с pg_sleep между ними, чтобы имитировать переход времени и фактически отражать это в данных.