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

vs91vp4v  于 2023-06-05  发布在  PostgreSQL
关注(0)|答案(1)|浏览(144)

Heroku Postgres删除触发器正在触发并成功删除其目标Postgres行,但该删除操作未通过Heroku Connect同步到Salesforce。当手动完成相同的删除操作时,它会同步到Salesforce,而不会出现问题。
对于需要通过Heroku Connect同步到Salesforce的Postgres删除触发器,是否有任何特殊注意事项,例如,在执行删除之前设置某些字段?

nue99wik

nue99wik1#

来自Heroku的支持...
Connect使用一个几乎完全未使用的Postgres会话变量xmlbinary作为标志,以防止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;

相关问题