Hola a todos, en el artículo de hoy veremos como realizar la inserción en múltiples tablas con una sola consulta en SQL Server. Aunque habitualmente se realizan estas operaciones mediante triggers. Os vamos a enseñar cómo realizar esta operación con una sola consulta.
¿Por qué realizar una inserción en múltiples tablas?
Muchos pueden ser los motivos por los que realizar una inserción en varias tablas. Por ejemplo, guardar un log o registro de los cambios. Insertar datos en una tabla auxiliar que se use en un procedimiento almacenado, etc.
Habitualmente, se suelen utilizar los triggers para este fin. Los triggers se activan automáticamente al realizar acciones sobre la tabla y se ejecutan cuando se realicen inserciones, actualizaciones, etc.
El problema de los triggers es que si se realizan con mucha frecuencia modificaciones en la tabla pueden ralentizar las operaciones INSERT o UPDATE. Es por ello que hoy vamos a mostraros una forma alternativa de insertar en dos tablas simultáneamente sin usar triggers.
Ejemplo de inserción
En primer lugar, crearemos las tablas donde realizaremos la inserción. Se insertarán inicialmente en la tabla «operaciones» y el resultado de esa inserción lo utilizaremos para rellenar la tabla log_operaciones.
-- Creción de las dos tablas
CREATE
TABLE
operaciones (ID1 INT, Col1 VARCHAR(100))
GO
CREATE
TABLE
log_operaciones(ID2 INT, Col2 VARCHAR(100))
GO
Una vez creadas las dos tablas, realizaremos la inserción de la siguiente forma:
-- Inserting into two tables together
INSERT
INTO
log_operaciones(ID1, Col1)
OUTPUT
inserted.ID1, inserted.Col1
INTO
log_operaciones
VALUES(1,'Col'), (2, 'Col2')
GO
Si analizamos el código, observamos que la diferencia entre un INSERT normal es la cláusula OUTPUT inserted INTO. Con ella, y siguiendo esta estructura, conseguimos el objetivo de este artículo, insertar en dos tablas. El resultado de la operación se guarda en inserted seguido de las columnas que nos interesan de la primera tabla. Podéis ver el resultado en la siguiente captura:

Siguiendo esta fórmula se puede adaptar a varias necesidades. Aún así, si tienes problemas para realizar la inserción o bien, quieres que revisemos tu código para comprobar por qué tarda tanto. Contáctanos sin compromiso en nuestra página de contacto.
Si quieres recibir en tu email estos tips, sucríbete a nuestra newsletter mensual.
¿Aún no conoces Query Performance? Descubre cómo puede ayudarte en tu entorno Oracle. Más información en su página de LinkedIn.
Sígue a GPS en LinkedIn