PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

PostgreSQL INSERT ON CONFLICT UPDATE (upsert) usa todos os valores excluídos


Postgres não implementou um equivalente a INSERT OR REPLACE . Do ON CONFLICT docs (ênfase minha):

Pode ser DO NOTHING ou uma cláusula DO UPDATE especificando os detalhes exatos da ação UPDATE a ser executada em caso de conflito.

Embora não forneça um atalho para substituição, ON CONFLICT DO UPDATE se aplica de maneira mais geral, pois permite definir novos valores com base em dados preexistentes. Por exemplo:
INSERT INTO users (id, level)
VALUES (1, 0)
ON CONFLICT (id) DO UPDATE
SET level = users.level + 1;