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