Esta pergunta e resposta serão de seu interesse:Inserir, em duplicata atualizar no PostgreSQL?
Basicamente, use duas consultas (faça a seleção, se for encontrada, atualize, caso contrário insira), que não é a melhor solução (dois scripts executados simultaneamente podem fornecer inserções duplicadas) ou faça como as perguntas acima sugerem - faça um procedimento armazenado/ função para fazê-lo (esta é provavelmente a melhor opção e mais fácil).