sql >> Base de Datos >  >> RDS >> PostgreSQL

PostgreSQL INSERT ON CONFLICT UPDATE (upsert) use todos los valores excluidos

Postgres no ha implementado un equivalente a INSERT OR REPLACE . Del ON CONFLICT documentos (énfasis mío):

Puede ser NO HACER NADA o una cláusula HACER ACTUALIZAR que especifique los detalles exactos. de la acción UPDATE a realizar en caso de conflicto.

Aunque no le proporciona una abreviatura para reemplazar, ON CONFLICT DO UPDATE se aplica de manera más general, ya que le permite establecer nuevos valores basados ​​en datos preexistentes. Por ejemplo:

INSERT INTO users (id, level)
VALUES (1, 0)
ON CONFLICT (id) DO UPDATE
SET level = users.level + 1;