I have two query. First one is upsert query and second one is update query. These queries run one after the other. Sometimes it is called twice in the same second.
But sometimes I got a deadlock dedected error.
First query:
insert into pairs
select *
from json_populate_recordset(
null::pairs,
'${JSON.stringify(marketsData)}'
)
order by market, parity, base, contractaddress
ON CONFLICT (market,parity,base,contractaddress)
DO UPDATE SET buy = EXCLUDED.buy,
sell= EXCLUDED.sell,
hambuy= EXCLUDED.hambuy,
hamsell= EXCLUDED.hamsell,
contractaddress= EXCLUDED.contractaddress);
Second query:
UPDATE pairs
SET multiple = true
WHERE parity IN (SELECT parity
FROM pairs
WHERE market = 'Uniswap'
GROUP by parity
HAVING count(*)>1)
AND market = 'Uniswap';
What should I do to avoid getting the deadlock error?