Reputation: 95
I've got a table like this
create table public.incominglog
(
envelopeid varchar(36) default ''::character varying not null,
messagetype text default NULL::character varying,
initialenvelopeid varchar(36) default NULL::character varying,
processid varchar(36) default NULL::character varying,
logtimestamp timestamp,
customscode varchar(8),
exchtypeid integer
);
create unique index incominglog_envelopeid_uindex
on public.incominglog (envelopeid);
create unique index incominglog_initialenvelopeid_uindex
on public.incominglog (initialenvelopeid);
and I'm trying to insert values like this
INSERT INTO
incominglog (
envelopeid,
messagetype,
initialenvelopeid,
processid,
logtimestamp,
customscode,
exchtypeid
)
VALUES
(
'ae2a2b46-ae4f-42a1-ada3-1f8f0aff7361',
'CMN.00001',
'aad06a96-667f-42c9-9196-8e0fec103d8b',
'4fed3854-e1de-42eb-b2c7-3ad714b58a9e',
'2019-04-17 14:57:54.195588',
'10210130',
'19200'
)
ON CONFLICT (initialenvelopeid)
DO update set
envelopeid = excluded.envelopeid,
messagetype = excluded.messagetype,
logtimestamp = excluded.logtimestamp
Help me please make changes in my insert script that it won't update values if there is already 'CMN.00001'
in messagetype
with the same initialenvelopeid
.
Upvotes: 3
Views: 779
Reputation: 246033
You can add a WHERE
clause to ON CONFLICT
:
ON CONFLICT DO UPDATE ...
WHERE incominglog.messagetype <> 'CMN.00001'
Upvotes: 5