AD

¿Ya dominas lo básico? Un curso estructurado de SQL es la vía rápida para dar el salto.

Ver cursos de SQL en Udemy

Enlace de afiliado. No te cuesta nada extra.

🗄️Lecciones de SQL
Lección 34 / 50

UPSERT: insertar o actualizar en una sola sentencia

En esta lección resolverás en una sola instrucción el caso «si no existe insértalo, y si existe actualízalo».

La sintaxis es INSERT ... ON CONFLICT(columna) DO UPDATE SET .... Si la inserción choca con un valor ya existente en esa columna única, en lugar de fallar se ejecuta el UPDATE. Dentro del UPDATE, la palabra excluded se refiere a los valores que se intentaban insertar.

El código de ejemplo intenta insertar el artículo 1, que ya existe, así que en su lugar suma 5 al stock actual y queda en 15. Existe también DO NOTHING, que simplemente ignora el conflicto.

El requisito indispensable es que la columna del ON CONFLICT tenga una restricción de unicidad o sea clave primaria; si no, la base de datos no tiene forma de detectar el choque y da error.

Su gran valor es evitar la condición de carrera del enfoque ingenuo («consulto si existe y luego inserto o actualizo»), donde dos procesos simultáneos pueden comprobar a la vez y acabar duplicando. Es imprescindible en sincronizaciones e importaciones periódicas.

SQL
SALIDA

💡 El motor de SQL puede tardar unos segundos en cargarse la primera vez que ejecutas código.

Espacio publicitario (banner)
Espacio publicitario (en el artículo)