El truco del INSERT idempotente

¿Cómo hago un script de carga que pueda correr muchas veces sin duplicar datos?

Cuaderno N°02 · Serie «Trucos de T-SQL para tu DW»

Por Javier Loria · Lectura ~10 min · SQL Server · Data Warehouse · ETL

La pregunta aparece apenas tienes que sembrar los catálogos de un data warehouse (tipos de movimiento, estados, conceptos) en dev, en QA, en producción y en el ambiente nuevo de la semana que viene. El reflejo —un INSERT que asume tabla vacía— vuelve cada despliegue una ruleta: o truena a la mitad, o inserta filas duplicadas, o alguien arma a mano un script «para esta vez».

Lo que quieres es un script idempotente: mismo resultado lo corras una o diez veces. Este cuaderno muestra cómo escribirlo en SQL Server con una sola técnica de conjuntos —(VALUES) EXCEPT SELECT— que inserta solo lo que falta y se puede correr sin miedo las veces que haga falta.

Qué vas a encontrar:

  • Por qué el INSERT ... VALUES ingenuo solo se puede correr una vez.
  • El patrón (VALUES) EXCEPT SELECT: declarar el conjunto y restar lo que ya existe.
  • Por qué el NOT IN que parecía equivalente te puede fallar.
  • Cómo detectar config drift: alguien cambió la configuración a mano.
  • El DISTINCT que viene gratis con EXCEPT.
  • Qué cambia si estás en Microsoft Fabric.