inserting/updating 使用 SQL 联系 Freshdesk 时出现验证失败错误

Validation failed error when inserting/updating Contact into Freshdesk using SQL

我想使用 Invantive Control for Excel Cloud All 通过 API 更新 Freshdesk 中的现有联系人。 Invantive Control 引发验证错误,电子邮件地址和 phone 应该是唯一的:Validation failed duplicate_value: email. It should be a unique value

不清楚 Invantive Control 的 SQL 是否转换为 CREATEPUT 命令。在 PUT 的情况下,应该可以更新已经存在的联系人。

我的SQL声明:

insert into contacts@freshdesk
( name
, address
, phone
, email
)
select deliveryaccountname
,      fulladdress
,      phone
,      email
from   FreshdeskTickets@inmemorystorage

insert 语句 contacts table 中创建 新行,它不会 修改 现有的。您似乎正在尝试创建已存在于您的 Freshdesk 实例中的联系人。

我会提出以下建议:

  • 根据用户的电子邮件地址插入票证。这看起来很奇怪,但可能是因为 Freshdesk API 在为该用户创建票证之前实际上会检查联系人是否存在;
  • 然后update已有的联系人,过滤掉不需要更新的联系人。你可以用 minus 做什么。为了便于使用,我会创建一个新的临时 table 来存储更新。

像这样:

create table contacts_to_update@inmemorystorage
as
select distinct deliveryaccountname
,      fulladdress
,      phone
,      email
from   FreshdeskTickets@inmemorystorage
minus
select name
,      address
,      phone
,      email
from   contacts@freshdesk

然后更新(注意 from 语法在 public 版本中尚不可用):

update contacts@freshdesk cfd
set    cfd.name = cto.name
,      cfd.address = cto.address
,      cfd.phone = cto.phone
from   contacts_to_update@inmemorystorage cto
where  cto.email = cfd.email

临时解决方案是只插入那些还不存在的联系人。 minus 也适用于 contacts 上的插入,如下所示:

insert into contacts@freshdesk
( name
, address
, phone
, email
)
select deliveryaccountname
,      fulladdress
,      phone
,      email
from   FreshdeskTickets@inmemorystorage
minus
select name
,      address
,      phone
,      email
from   contacts@freshdesk