2

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

不清楚 Invantive Control 的 SQL 是否翻译成CREATEorPUT命令。在这种情况下PUT,应该可以更新已经存在的联系人。

我的 SQL 语句:

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

1 回答 1

1

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

我会提出以下建议:

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

像这样:

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语法在公共版本中尚不可用):

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
于 2016-10-27T08:19:34.983 回答