{"id":25181676,"url":"https://github.com/angelcasasbl/on_conflict_sqlserver","last_synced_at":"2025-08-23T16:08:48.164Z","repository":{"id":276492093,"uuid":"929443874","full_name":"AngelCasasbl/on_conflict_SQLserver","owner":"AngelCasasbl","description":null,"archived":false,"fork":false,"pushed_at":"2025-02-08T15:14:40.000Z","size":2,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-04T06:11:17.394Z","etag":null,"topics":["sql-server"],"latest_commit_sha":null,"homepage":"","language":"TSQL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AngelCasasbl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-08T15:10:46.000Z","updated_at":"2025-02-08T15:21:15.000Z","dependencies_parsed_at":"2025-02-09T22:45:07.952Z","dependency_job_id":null,"html_url":"https://github.com/AngelCasasbl/on_conflict_SQLserver","commit_stats":null,"previous_names":["angelcasasbl/on_conflict_sqlserver"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AngelCasasbl/on_conflict_SQLserver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AngelCasasbl%2Fon_conflict_SQLserver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AngelCasasbl%2Fon_conflict_SQLserver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AngelCasasbl%2Fon_conflict_SQLserver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AngelCasasbl%2Fon_conflict_SQLserver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AngelCasasbl","download_url":"https://codeload.github.com/AngelCasasbl/on_conflict_SQLserver/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AngelCasasbl%2Fon_conflict_SQLserver/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271755437,"owners_count":24815407,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-23T02:00:09.327Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["sql-server"],"created_at":"2025-02-09T17:18:34.490Z","updated_at":"2025-08-23T16:08:48.128Z","avatar_url":"https://github.com/AngelCasasbl.png","language":"TSQL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 Implementación de MERGE en SQL Server\n\nEste 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.\n\n## 📌 Descripción\nEl script incluido realiza las siguientes acciones:\n1. **Crea la tabla `clientes`** con una clave primaria en la columna `id`.\n2. **Inserta un registro inicial** para simular datos existentes.\n3. **Valida la restricción de clave primaria**, intentando insertar un ID duplicado y capturando el error.\n4. **Utiliza `MERGE` para actualizar si el ID existe o insertar si no existe.**\n5. **Muestra los resultados** finales de la tabla para verificar la ejecución.\n\n## 🛠️ Tecnologías utilizadas\n- **SQL Server** (Microsoft SQL Server Management Studio o Azure SQL Database)\n\n## 📜 Código principal\n```sql\n-- 1. Crear la tabla de prueba\nCREATE TABLE clientes (\n    id INT PRIMARY KEY,\n    nombre VARCHAR(100),\n    email VARCHAR(100)\n);\n\n-- 2. Insertar un registro inicial\nINSERT INTO clientes (id, nombre, email) VALUES (1, 'Juan Pérez', 'juan@example.com');\n\n-- 2.1. Intentar insertar un ID duplicado para probar la restricción de clave primaria\nPRINT 'Intentando insertar un ID duplicado...'\nBEGIN TRY\n    INSERT INTO clientes (id, nombre, email) VALUES (1, 'Carlos Gómez', 'carlos@example.com');\nEND TRY\nBEGIN CATCH\n    PRINT 'Error: No se puede insertar un ID duplicado.';\n    PRINT ERROR_MESSAGE();\nEND CATCH;\n\n-- 3. Usar MERGE para insertar o actualizar\nPRINT 'Ejecutando MERGE...'\nMERGE INTO clientes AS target\nUSING (VALUES (1, 'Luis Casas', 'luis@example.com')) AS source (id, nombre, email)\nON target.id = source.id\nWHEN MATCHED THEN\n    UPDATE SET nombre = source.nombre, email = source.email\nWHEN NOT MATCHED THEN\n    INSERT (id, nombre, email) VALUES (source.id, source.nombre, source.email);\n\n-- 4. Ver los resultados\nPRINT 'Resultados después de MERGE:'\nSELECT * FROM clientes;\n```\n\n## 🎯 Beneficios del uso de `MERGE`\n✅ **Evita la necesidad de hacer múltiples consultas (`IF EXISTS` + `UPDATE` + `INSERT`)**\n✅ **Mejora el rendimiento en cargas masivas de datos**\n✅ **Garantiza integridad y evita errores de duplicados**\n\n## 🚀 Cómo ejecutar el script\n1. **Abrir SQL Server Management Studio (SSMS)**\n2. **Ejecutar el código SQL en una base de datos de prueba**\n3. **Observar la salida** para ver cómo `MERGE` maneja los datos\n\n## 📢 Contribuciones\nSi deseas mejorar este script o agregar nuevas funcionalidades, ¡siéntete libre de hacer un fork y contribuir! 😃\n\n📌 **Autor:** Luis Ángel Casas Ballestas\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fangelcasasbl%2Fon_conflict_sqlserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fangelcasasbl%2Fon_conflict_sqlserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fangelcasasbl%2Fon_conflict_sqlserver/lists"}