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