Heroku Postgres 删除触发器正在触发并成功删除其目标 Postgres 行,但删除未通过 Heroku Connect 同步到 Salesforce。当手动完成相同的删除时,它会毫无问题地同步到 Salesforce。
对于需要通过 Heroku Connect 同步到 Salesforce 的 Postgres 删除触发器,是否有任何特殊注意事项,例如,在执行删除之前设置某些字段?
最佳答案
来自 Heroku 支持...
Connect 使用一个几乎完全未使用的名为 xmlbinary 的 Postgres session 变量作为标志,以防止 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;
关于postgresql - Heroku Postgres 删除触发器未通过 Heroku Connect 复制到 Salesforce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35543809/