В последните версии на Postgres има when
клауза, която можете да използвате за условно задействане на тригера. Можете да го използвате като:
... when (old.* is distinct from new.*) ...
Не съм 100% сигурен, че този ще работи (не мога да тествам банкомат):
... when (current_user = 'foo') ...
(Ако не, опитайте да го поставите в блок if във вашия plpgsql.)
http://www.postgresql.org/docs/current/static /sql-createtrigger.html
(Има и актуализацията [before|after] update of [col_name]
синтаксис, но го намирам за по-малко полезен, защото ще се задейства дори ако стойността на колоната остане същата.)
Добавяйки тази допълнителна бележка, виждайки, че отговорът на @CraigRinger подчертава какво правите...
Опитът да се настрои репликация master-master между Salesforce и Postgres с помощта на условни тригери е, според мен, празна мечта. Просто го забравете... Ще има много повече от това:ще трябва да заключите данните както е уместно от двата края (което не е задължително да е осъществимо по разумен начин), да управлявате произтичащите блокирания (които може да не се открие автоматично) и да работи с противоречиви данни.
Вашите шансове да се справите успешно с това с малък екип е около нула - особено ако уменията ви за Postgres са на ниво, при което инвестирането на време в четене на ръководството би отговорило на вашите собствени въпроси. Можете спокойно да се обзаложите, че някой много по-компетентен в Salesforce или някой голям SQL магазин (напр. като този, за който работи Крейг) е счел същото и или се е провалил, или е отхвърлил.
Нещо повече, бих подчертал, че прилагането на ефективна, синхронна репликация с множество главни устройства не решен проблем. Правилно прочетохте:не решен. Само преди няколко години го правех въобще не беше достатъчно добре решен, за да влезе в ядрото на Postgres. Така че нямате предшестващо състояние на техниката, което да работи добре, върху което да базирате работата си и да го използвате.