Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/angelcasasbl/on_conflict_sqlserver
https://github.com/angelcasasbl/on_conflict_sqlserver
sql-server
Last synced: about 22 hours ago
JSON representation
- Host: GitHub
- URL: https://github.com/angelcasasbl/on_conflict_sqlserver
- Owner: AngelCasasbl
- Created: 2025-02-08T15:10:46.000Z (2 days ago)
- Default Branch: main
- Last Pushed: 2025-02-08T15:14:40.000Z (2 days ago)
- Last Synced: 2025-02-08T16:24:31.295Z (2 days ago)
- Topics: sql-server
- Language: TSQL
- Homepage:
- Size: 1.95 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 🚀 Implementación de MERGE en SQL Server
Este proyecto demuestra cómo utilizar la instrucción `MERGE` en **SQL Server** para insertar o actualizar registros de manera eficiente, evitando errores de clave primaria y optimizando el manejo de datos.
## 📌 Descripción
El script incluido realiza las siguientes acciones:
1. **Crea la tabla `clientes`** con una clave primaria en la columna `id`.
2. **Inserta un registro inicial** para simular datos existentes.
3. **Valida la restricción de clave primaria**, intentando insertar un ID duplicado y capturando el error.
4. **Utiliza `MERGE` para actualizar si el ID existe o insertar si no existe.**
5. **Muestra los resultados** finales de la tabla para verificar la ejecución.## 🛠️ Tecnologías utilizadas
- **SQL Server** (Microsoft SQL Server Management Studio o Azure SQL Database)## 📜 Código principal
```sql
-- 1. Crear la tabla de prueba
CREATE TABLE clientes (
id INT PRIMARY KEY,
nombre VARCHAR(100),
email VARCHAR(100)
);-- 2. Insertar un registro inicial
INSERT INTO clientes (id, nombre, email) VALUES (1, 'Juan Pérez', '[email protected]');-- 2.1. Intentar insertar un ID duplicado para probar la restricción de clave primaria
PRINT 'Intentando insertar un ID duplicado...'
BEGIN TRY
INSERT INTO clientes (id, nombre, email) VALUES (1, 'Carlos Gómez', '[email protected]');
END TRY
BEGIN CATCH
PRINT 'Error: No se puede insertar un ID duplicado.';
PRINT ERROR_MESSAGE();
END CATCH;-- 3. Usar MERGE para insertar o actualizar
PRINT 'Ejecutando MERGE...'
MERGE INTO clientes AS target
USING (VALUES (1, 'Luis Casas', '[email protected]')) AS source (id, nombre, email)
ON target.id = source.id
WHEN MATCHED THEN
UPDATE SET nombre = source.nombre, email = source.email
WHEN NOT MATCHED THEN
INSERT (id, nombre, email) VALUES (source.id, source.nombre, source.email);-- 4. Ver los resultados
PRINT 'Resultados después de MERGE:'
SELECT * FROM clientes;
```## 🎯 Beneficios del uso de `MERGE`
✅ **Evita la necesidad de hacer múltiples consultas (`IF EXISTS` + `UPDATE` + `INSERT`)**
✅ **Mejora el rendimiento en cargas masivas de datos**
✅ **Garantiza integridad y evita errores de duplicados**## 🚀 Cómo ejecutar el script
1. **Abrir SQL Server Management Studio (SSMS)**
2. **Ejecutar el código SQL en una base de datos de prueba**
3. **Observar la salida** para ver cómo `MERGE` maneja los datos## 📢 Contribuciones
Si deseas mejorar este script o agregar nuevas funcionalidades, ¡siéntete libre de hacer un fork y contribuir! 😃📌 **Autor:** Luis Ángel Casas Ballestas