Principales respuestas
INSERTAR VARIOS REGISTROS SOLO SI NO EXISTEN EN SQL SERVER 2012

Pregunta
-
Que tal a todos , quiero realizar una insercion de varios registros de una tabla a otro con un query pero quiero validar primero que no existan los registros en la tabla en la que los insertare , alguno sabra de laguna funcion que me ayude a hacer esto
ya que quiero que valide en automatico todos los registros de un select y que inserte todos los que no existen
saludos , espero me puedan orientar
Respuestas
-
Saludos
La sentencia Merge puede hacer las veces de un insert o update o sin el update depende de como la programer es conocida como upsert en mysql pero un poco mas flexible, por favor ten en cuenta que no es la función mas optima.
https://msdn.microsoft.com/en-us/library/bb510625.aspx
- Propuesto como respuesta Miguel Torres C lunes, 8 de agosto de 2016 22:50
- Marcado como respuesta Laura CeglzModerator jueves, 11 de agosto de 2016 15:59
-
gracias no e usado la de if exist pero no se que me puedan decir de esta funcion me sirve o que complicaciones puedo tener ?
No veo complicaciones, fíjate en el siguiente ejemplo como puedes plantear la operación:
DECLARE @Seccion nvarchar(100) = 'SQL Server'; INSERT INTO SeccionesForo (idSeccion, Seccion) SELECT (1, @Seccion) WHERE NOT EXISTS (SELECT 1 FROM SeccionesForo WHERE (Seccion = @Seccion));
Se realizará la inserción únicamente cuando no exista el valor en la tabla.
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.- Marcado como respuesta Laura CeglzModerator jueves, 11 de agosto de 2016 15:59
Todas las respuestas
-
Saludos
La sentencia Merge puede hacer las veces de un insert o update o sin el update depende de como la programer es conocida como upsert en mysql pero un poco mas flexible, por favor ten en cuenta que no es la función mas optima.
https://msdn.microsoft.com/en-us/library/bb510625.aspx
- Propuesto como respuesta Miguel Torres C lunes, 8 de agosto de 2016 22:50
- Marcado como respuesta Laura CeglzModerator jueves, 11 de agosto de 2016 15:59
-
Efectivamente como te comenta Enrique existe la instruccion MERGE, de hecho por mi experiencia esta es una sentencia optima para este tipo de escenarios, de hecho resulta optima en el sentido que no tienes que diseñar otras instrucciones independientes y comprobaciones explicitas.
Solo un comentario, esta instrucción esta disponible desde la versión 2008.
"Oh, the wind, the wind is blowing,through the graves the wind is blowing,Freedom soon will come; then well come from the shadows".The Partisan(Leonard Cohen) Email: me[at]geohernandez.net Blog:www.geohernandez.net
-
-
Por lo general esa sentencia (if exists) la uso para comprobar que existan filas en una tabla destino o que existe un objeto, pero te invito a revisar la documentación de la instrucción MERGE.
"Oh, the wind, the wind is blowing,through the graves the wind is blowing,Freedom soon will come; then well come from the shadows".The Partisan(Leonard Cohen) Email: me[at]geohernandez.net Blog:www.geohernandez.net
-
-
gracias no e usado la de if exist pero no se que me puedan decir de esta funcion me sirve o que complicaciones puedo tener ?
No veo complicaciones, fíjate en el siguiente ejemplo como puedes plantear la operación:
DECLARE @Seccion nvarchar(100) = 'SQL Server'; INSERT INTO SeccionesForo (idSeccion, Seccion) SELECT (1, @Seccion) WHERE NOT EXISTS (SELECT 1 FROM SeccionesForo WHERE (Seccion = @Seccion));
Se realizará la inserción únicamente cuando no exista el valor en la tabla.
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.- Marcado como respuesta Laura CeglzModerator jueves, 11 de agosto de 2016 15:59