Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Insertar si no Existe

Estas en el tema de Insertar si no Existe en el foro de SQL Server en Foros del Web. Hola a todos!!! Necesito que me ayuden en algo muy basico pero que me trae dando vueltas, resulta que tengo una tabla asi: Tabla1 Clave1, ...
  #1 (permalink)  
Antiguo 31/08/2009, 16:55
Avatar de otreblanc  
Fecha de Ingreso: mayo-2005
Ubicación: Chiapas, la última frontera...
Mensajes: 73
Antigüedad: 19 años
Puntos: 0
Insertar si no Existe

Hola a todos!!! Necesito que me ayuden en algo muy basico pero que me trae dando vueltas, resulta que tengo una tabla asi:

Tabla1
Clave1, clave2, Clave3
(donde la llave primaria la forman los 3 primeros campos)

Ahora al dar de alta un nuevo registro tengo que verificar primero si existe
para luego darlo de alta, lo hago asi:

1er. Paso: if not exists(select ....

2o. Paso: insert into tabla1 select clave1, clave2, ...


Mi pregunta es:
Se pueden reducir ambos pasos a 1 solo ??? posiblemente poniendo condiciones dentro del INSERT (algo asi como NOT IN)

Actualmente lo hago asi:

if not exists (
select *
from tabla1
where clave1= @clave1
and clave2= @clave2
and clave3= @calve3
)
insert into tabla1
select @clave1, @clave2, @clave3



Y quisiera ver si hay posibilidad de reducirlo; estoy con sql2005, Muchas Gracias!

Última edición por otreblanc; 31/08/2009 a las 17:20 Razón: informacion agregada
  #2 (permalink)  
Antiguo 31/08/2009, 19:57
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Respuesta: Insertar si no Existe

Hasta el 2008 existe la clausula merge, en versiones anteriores..
Si se requiriera hacerlo masivo, seria algo como ...

Código:
insert into tabla1 (clave1, clave2, clave3)
select clave1, clave2, clave3
FROM  tabla1 t2
Left outer join  
         tabla2 t1
On  t1.clave1 = t2.clave1 and
      t1.clave2 = t2.clave2 and
      t1.clave3 = t3.clave3
WHERE t1.clave1 is null
Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:16.