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 是否转换为 CREATE
或 PUT
命令。在 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
我想使用 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 是否转换为 CREATE
或 PUT
命令。在 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