En SQL Server, una operación "Upsert" combina las acciones de un inserto y una declaración de actualización en una sola declaración. Esta operación inserta una nueva fila en una tabla si esa fila no está presente. De lo contrario, actualiza una fila ya presente. El beneficio de realizar una operación Upsert es que elimina la necesidad de declaraciones de inserción y actualización separadas, simplificando su código SQL y reduciendo la probabilidad de errores.
Creando una mesa
Creemos una tabla en el servidor SQL que podemos usar para realizar las operaciones UPSERT en.
Crear tabla [DBO].[Empleado](Producción:
Nombre empidado depid salFormas de realizar la operación Upsert
Hay varias formas de realizar una operación Upsert en el servidor SQL. En este artículo, discutiremos los tres métodos comunes para realizar una operación UPSERT: utilizando la cláusula EXISTS, la función RowCount y la declaración de fusión.
1. Usando la cláusula EXISTS
Este método implica usar una subconsulta para verificar si la fila ya existe en la tabla antes de realizar una instrucción de inserción o actualización. La cláusula EXISTS devuelve verdadero si la subconsulta devuelve alguna fila.
Comenzar la transacciónProducción:
Nombre empidado depid salAquí, el código SQL utiliza el método Exists para realizar una operación UPSERT en el servidor SQL. Inicia una transacción y declara las variables para mantener los valores de identificación y nombre del empleado. El código verifica si existe un registro con la identificación de empleado dada en la tabla utilizando la cláusula EXISTS. Si existe, actualiza el nombre del empleado a un nuevo valor. De lo contrario, inserta una nueva fila con la identificación y el nombre del empleado dado.
2. Usando la función RowCount
Este método implica ejecutar una instrucción de actualización primero, seguido de una declaración de inserción si la declaración de actualización no actualizó ninguna fila.
Comenzar la transacciónProducción:
Nombre empidado depid salAquí, el código SQL intenta actualizar el nombre del empleado con la ID dada en la tabla utilizando el UpdLock y las sugerencias serializables que adquieren un bloqueo exclusivo en la fila seleccionada. Si la actualización no afecta a las filas, el código realiza una instrucción de inserción para insertar una nueva fila con la identificación del empleado y los valores de los nombres.
3. Usando la declaración de fusión
Una tercera forma de realizar una operación UPSERT en el servidor SQL es aplicar la declaración de fusión. Este método combina las acciones de las declaraciones de inserción y actualización en una sola instrucción, similar a la cláusula existe pero con características más avanzadas.
declarar @EmployeeId int = 18;Producción:
Nombre empidado depid salEsta consulta SQL utiliza la declaración de fusión para fusionar los datos de una tabla de origen en una tabla de destino. Coincide con las filas entre las dos tablas usando la "columna Empid", y actualiza la "columna de nombre" en la tabla de destino si se encuentra una coincidencia. Si no hay coincidencia, inserta una nueva fila.
Conclusión
Las operaciones de Upsert son un requisito común en el servidor SQL. Hay múltiples formas de lograrlos, incluido el uso del método Exists, la función RowCount y la declaración de fusión. Podemos elegir el mejor enfoque basado en nuestro requisito.