lunes, 15 de agosto de 2011

Actualización de registros en SQL Server con unión de tablas y recuperación de registros actualizados

Este script demuestra cómo actualizar 2 tablas relacionadas mediante un JOIN y como poder recuperar los registros actualizados.


DECLARE @tablaReferencia TABLE(
id INT,
valorReferencia INT
)

DECLARE @tablaAActualizar TABLE(
id INT,
valor INT DEFAULT 0,
otro INT DEFAULT 0
)

DECLARE @actualizados TABLE(
id INT,
valor INT,
otro INT
)

INSERT INTO @tablaReferencia(id, valorReferencia) VALUES(1, 4)
INSERT INTO @tablaReferencia(id, valorReferencia) VALUES(2, 5)

INSERT INTO @tablaAActualizar(id) VALUES(1)
INSERT INTO @tablaAActualizar(id) VALUES(2)
INSERT INTO @tablaAActualizar(id) VALUES(3)

SELECT * FROM @tablaReferencia
SELECT * FROM @tablaAActualizar

UPDATE @tablaAActualizar
SET valor = tr.valorReferencia, otro = 6
OUTPUT
INSERTED.id, INSERTED.valor, INSERTED.otro
INTO @actualizados
FROM @tablaAActualizar ta
INNER JOIN @tablaReferencia tr
ON ta.id = tr.id


SELECT * FROM @tablaAActualizar
SELECT * FROM @actualizados