11/25/2020 03:18:00 a. m.
Share:
Blog Informático sobre Análisis y Desarrollo de Software.
MERGE <table_destino> [AS TARGET] USING <table_origen> [AS SOURCE] ON <condicion_compara_llaves> [WHEN MATCHED THEN <accion cuando coinciden> ] [WHEN NOT MATCHED [BY TARGET] THEN <accion cuando no coinciden por destino> ] [WHEN NOT MATCHED BY SOURCE THEN <accion cuando no coinciden por origen> ];Analizando la instrucción, podemos desglosar su funcionamiento:
--Sincronizar la tabla TARGET con --los datos actuales de la tabla SOURCE MERGE Alumno AS TARGET USING AlumnoActual AS SOURCE ON (TARGET.Codigo = SOURCE.Codigo) --Cuandos los registros concuerdan con por la llave --se actualizan los registros si tienen alguna variación WHEN MATCHED AND TARGET.Nombre <> SOURCE.Nombre OR TARGET.Promedio <> SOURCE.Promedio THEN UPDATE SET TARGET.Nombre = SOURCE.Nombre, TARGET.Promedio = SOURCE.Promedio --Cuando los registros no concuerdan por la llave --indica que es un dato nuevo, se inserta el registro --en la tabla TARGET proveniente de la tabla SOURCE WHEN NOT MATCHED BY TARGET THEN INSERT (Codigo, Nombre, Promedio) VALUES (SOURCE.Codigo, SOURCE.Nombre, SOURCE.Promedio) --Cuando el registro existe en TARGET y no existe en SOURCE --se borra el registro en TARGET WHEN NOT MATCHED BY SOURCE THEN DELETE --Seccion opcional e informativa --$action indica el tipo de accion --en OUTPUT retorna cualquiera de las 3 acciones --'INSERT', 'UPDATE', or 'DELETE', OUTPUT $action, DELETED.Codigo AS TargetCodigo, DELETED.Nombre AS TargetNombre, DELETED.Promedio AS TargetPuntos, INSERTED.Codigo AS SourceCodigo, INSERTED.Nombre AS SourceNombre, INSERTED.Promedio AS SourcePuntos; SELECT @@ROWCOUNT; GO SELECT * FROM Alumno SELECT * FROM AlumnoActual
1 comentarios: