Конечно, есть некоторые накладные расходы на триггеры, но обычно они незначительны. (Параметр c# также будет иметь небольшие накладные расходы на код и небольшие накладные расходы на сеть, поэтому, вероятно, это будет подбрасывание). Также в некоторой степени зависит от вашего определения «огромного объема транзакций в день». Это десятки тысяч транзакций в день или десятки тысяч транзакций в секунду. Часто огромное - это относительно небольшое число. Единственный способ узнать наверняка - это протестировать его (убедитесь, что вы фиксируете общее прошедшее время, а не только время в базе данных). Синтаксис триггера в Postgres кардинально отличается от MySql. В Postgres вы создаете функцию специального типа (возвращает триггер). Сам триггер представляет собой единый оператор, выполняющий функцию. С MySql код находится непосредственно в определении триггера (точно так же, как Oracle - фактически, пока Oracle не купил его MySql не поддерживал триггеры.) Приятным преимуществом здесь является то, что эту единственную функцию может использовать любой таблица, которая реализует то же имя столбца (по крайней мере, в этом случае).
create or replace
function set_updated_timestamp()
returns trigger
language plpgsql
as $$
begin
new.updated = now();
return new;
end;
$$;
См. полный пример fiddle . Примечание: Postgres версия 9.4 больше не поддерживается , я предлагаю выполнить обновление как можно скорее. Для скрипки я использовал версию 9.5, так как это самая старая доступная версия. Также, если скрипка работает медленно, это связано с операторами "select sleep", а НЕ с триггером. Я не думаю, что "db <> fiddle" действительно уважает эти утверждения.