Upsert en SQL
INSERT ON CONFLICT escribe una fila o actualiza la que ya estaba.
INSERT INTO daily_counts (day, hits)
VALUES ('2026-07-29', 1)
ON CONFLICT (day)
DO UPDATE SET
hits = daily_counts.hits + excluded.hits;
INSERT INTO tags (name)
VALUES ('sql')
ON CONFLICT (name)
DO NOTHING;
Cómo funciona
ON CONFLICTnombra la restricción que se violaría.excludedse refiere a la fila que intentaste insertar.DO NOTHING, en cambio, vuelve el insert idempotente.
Palabras clave y builtins usados aquí
DOINSERTINTONOTHINGONSETUPDATEVALUESday
El intento, en números
- Líneas
- 10
- Caracteres a escribir
- 206
- Tokens
- 50
- Ritmo de tres estrellas
- 95 tpm
Al ritmo de tres estrellas de 95 tokens por minuto, este intento toma unos 32 segundos.
Paso 3 de 5 en Transacciones; paso 13 de 17 en Planes y rendimiento.