Ошибка проверки при вставке / обновлении контакта в Freshdesk с использованием SQL
Я хочу обновить существующий контакт в Freshdesk через API, используя Invantive Control для Excel Cloud All.
Invantive Control выдает ошибку проверки того, что адрес электронной почты и телефон должны быть уникальными: Validation failed duplicate_value: email. It should be a unique value
,
Не ясно, переводит ли SQL Invantive Control в CREATE
или же PUT
команда. В случае PUT
должна быть возможность обновить уже существующий контакт.
Мой оператор SQL:
insert into contacts@freshdesk
( name
, address
, phone
, email
)
select deliveryaccountname
, fulladdress
, phone
, email
from FreshdeskTickets@inmemorystorage
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