Heroku Postgres删除了不通过Heroku Connect复制到Salesforce的触发器

时间:2016-02-22 00:09:49

标签: postgresql heroku salesforce connect heroku-postgres

Heroku Postgres删除触发器正在触发并成功删除其目标Postgres行,但删除不是通过Heroku Connect同步到Salesforce。手动完成相同的删除操作时,它会同步到Salesforce而不会出现问题。

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

1 个答案:

答案 0 :(得分:1)

来自Heroku支持......

Connect使用一个几乎完全未使用的名为xmlbinary的Postgres会话变量作为标志,以防止Connect自己对表的写入触发其他_trigger_log条目。如果由于Connect活动而发生这些删除(因此在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;