Anexo un ejemplo muy útil de una carga inicial de datos.
Tiene la ventaja de que si manejas una columna IDENTITY como llave (algo muy común); deshabilita la característica y al final del script la vuelve a habilitar.
Además realiza una actualización de datos si la clave ya existe. Si no existe, inserta el registro.
El secreto reside en trabajar con una tabla temporal, idéntica a la tabla a cargar/actualizar y el uso del comando MERGE.
CREATE TABLE #C_CONFIGURACION (
    [FL_CONFIGURACION] INT NOT NULL PRIMARY KEY,
   
[DS_CONFIGURACION] NVARCHAR (100)  NOT NULL,
    [DS_VALOR]         NVARCHAR (1000) NOT NULL,
    [DS_COMENTARIOS]   NVARCHAR (1000) NULL,   
)
GO
INSERT INTO #C_CONFIGURACION (FL_CONFIGURACION, DS_CONFIGURACION, DS_VALOR, DS_COMENTARIOS) VALUES (1, 'CUENTA_CORREO', 'cuenta@gmail.com', 'Cuenta de correo')
INSERT INTO #C_CONFIGURACION (FL_CONFIGURACION, DS_CONFIGURACION, DS_VALOR, DS_COMENTARIOS) VALUES (2, 'USUARIO_CORREO', 'cuenta', 'Usuario de la cuenta de
correo')
INSERT INTO #C_CONFIGURACION (FL_CONFIGURACION, DS_CONFIGURACION, DS_VALOR, DS_COMENTARIOS) VALUES (3, 'PWD_CORREO', 'password', 'Contraseña de la cuenta de
correo')
INSERT INTO #C_CONFIGURACION (FL_CONFIGURACION, DS_CONFIGURACION, DS_VALOR, DS_COMENTARIOS) VALUES (4, 'SMTP_CORREO', 'smtp.gmail.com', 'SMTP')
INSERT INTO #C_CONFIGURACION (FL_CONFIGURACION, DS_CONFIGURACION, DS_VALOR, DS_COMENTARIOS) VALUES (5, 'PUERTO_SMTP_CORREO', '587', 'Puerto SMTP')
SET IDENTITY_INSERT ATP.C_CONFIGURACION ON
MERGE [ATP].[C_CONFIGURACION] AS O
USING #C_CONFIGURACION AS T
ON (T.[FL_CONFIGURACION] = O.[FL_CONFIGURACION])
WHEN NOT MATCHED BY TARGET
        THEN INSERT (FL_CONFIGURACION, DS_CONFIGURACION, DS_VALOR, DS_COMENTARIOS)
        VALUES (T.FL_CONFIGURACION, T.DS_CONFIGURACION, T.DS_VALOR, T.DS_COMENTARIOS)
WHEN MATCHED
        THEN UPDATE SET  
        O.DS_CONFIGURACION = T.DS_CONFIGURACION,
        O.DS_VALOR = T.DS_VALOR,
        O.DS_COMENTARIOS = T.DS_COMENTARIOS;
SET IDENTITY_INSERT ATP.C_CONFIGURACION OFF
DROP TABLE #C_CONFIGURACION
No hay comentarios.:
Publicar un comentario