Heroku Postgres 删除触发器未通过 Heroku Connect 复制到 Salesforce

Heroku Postgres delete trigger not replicating to Salesforce over Heroku Connect

Heroku Postgres 删除触发器正在触发并成功删除其目标 Postgres 行,但删除未通过 Heroku Connect 同步到 Salesforce。当手动完成相同的删除时,它会毫无问题地同步到 Salesforce。

对于需要通过 Heroku Connect 同步到 Salesforce 的 Postgres 删除触发器,是否有任何特殊注意事项,例如,在执行删除之前设置某些字段?

来自 Heroku 支持...

Connect 使用一个几乎完全未使用的名为 xmlbinary 的 Postgres 会话变量作为标志,以防止 Connect 自己对 table 的写入触发额外的 _trigger_log 条目。如果这些删除是 Connect activity 的结果(因此在 Connect 数据库连接的上下文中执行),Connect 可能会看到此 xmlbinary 变量并忽略更改。 如果您可以在触发器持续时间内将 xmlbinary 的值更改为 base64,则应该修复它。看起来像这样:

CREATE OR REPLACE FUNCTION foo() RETURNS TRIGGER AS $$
DECLARE 
  oldxmlbinary varchar;
BEGIN
  -- Save old value
  oldxmlbinary := get_xmlbinary();

  -- Change value to ensure writing to _trigger_log is enabled
  SET SESSION xmlbinary TO 'base64';

  -- Perform your trigger functions here

  -- Reset the value
  EXECUTE 'SET SESSION xmlbinary TO ' || oldxmlbinary;

  RETURN NEW;
END;
$$ LANGUAGE plpgsql;