Buscando alguna información sobre si un procedimiento Upsert (insertar o si existe, luego actualizar) se considera una mala práctica en la programación de la base de datos. Trabajo en el servidor SQL si eso tiene alguna relevancia.Postres de base de datos: ¿buenas o malas prácticas?
En un lugar en el que trabajé hace algunos meses, el gurú residente de DB estableció en estándares de codificación db recién escritos (la mayoría de los cuales estoy de acuerdo), que los Upserts deberían evitarse.
Realmente no puedo ver una razón lógica para esto, y me considero razonablemente consciente de las buenas prácticas de programación. Creo que son útiles para la gestión directa de datos y ayudan a evitar números excesivos de procedimientos almacenados.
Buscando alguna información/discusión que me ayude a llegar a una conclusión al respecto.
Gracias.
Actualización En respuesta a los comentarios:
El contexto específico que me refiero es la creación o actualización de los datos de una representación de entidad de dominio en la base de datos. Digamos, por ejemplo, que existe un objeto "Persona" como representación de la tabla "Persona" en la base de datos. Simplemente necesito un mecanismo para crear una nueva persona o actualizar una existente. Aquí tengo la opción de crear un procedimiento almacenado Upsert, o dos procedimientos almacenados separados: uno para Update y otro para Insert.
¿Alguna ventaja o desventaja en cualquier vista?
Desde la perspectiva de Oracle, use en su lugar la instrucción MERGE. – DCookie
MERGE también existe en SQL Server (creo que 2005+) – RPM1984