Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-08-2010
Joe_Balda Joe_Balda is offline
Miembro
 
Registrado: ago 2010
Posts: 23
Poder: 0
Joe_Balda Va por buen camino
insert or update dependiendo de PK

Buen dia gente del foro:

Estoy intentando realizar un Stored Procedure que inserte o modifique registros en una tabla dependiendo de su PK.

Buscando encontre en la web encontre un ejemplo que se ve como sigue:

Código SQL [-]BEGIN insert into t1 (id, c1, c2) values (:id, :c1, :c2) WHEN SQLCODE -803 DO update t1 set c1 = :c1, c2 = :c2 WHERE id = :id; END


El ejemplo funciona perfectamente pero yo lo reemplazo por algo asi


Código SQL [-]BEGIN insert into t1 (t1.id, t1.c1, t1.c2) select t2.id,t2.c1,t3.c1 from t2 inner join t3 on .... WHEN SQLCODE -803 DO update t1 set c1 = (Select c1 from t3 where t1.id = t3.id ); END


El stored procedure se genera y funciona , el problema que tengo es que la parte de INSERT solo la realiza si la tabla T1 esta vacia.

Alguna sugerencia o alternativa espero

Utilizo firebird 2.0 y IBOConsole.

saludos
Responder Con Cita
  #2  
Antiguo 13-08-2010
Joe_Balda Joe_Balda is offline
Miembro
 
Registrado: ago 2010
Posts: 23
Poder: 0
Joe_Balda Va por buen camino
Insert or update dependiendo de pk

Necesito insertar registros en una tabla desde otra , para lo cual ejecuto un codigo com el que sigue
Código SQL [-]
  Insert into TablaDestino
    Select *
      from TablaFuente
     where condiciones;

Si ejecuto el codigo por segunda vez, como hacer para detectar si el registro existe en tabladestino y en ese caso realizar un Update.
Responder Con Cita
  #3  
Antiguo 13-08-2010
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 22
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Si estas utilizando Firebird podri quedar asi...
Código SQL [-]
 Update Or Insert Into TablaDestino
    Select *
      from TablaFuente
     where condiciones;

Otra forma:

Código SQL [-]
MERGE INTO TablaDestino TD
   USING (SELECT * FROM TablaFuente) TF
   ON (TD.Campo_De_Union=TF.Campo_De_Union)
WHEN MATCHED THEN
   UPDATE SET
       Campo2=TF.Campo2
WHEN NOT MATCHED THEN
    INSERT (Campo1, Campo2)
    VALUES (TF.Campo1, TF.Campo2)

Saludos
Responder Con Cita
  #4  
Antiguo 13-08-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Joe_Balda no repitas hilos. hace apenas 2 horas has colocado el mismo aquí.

Te recomiendo que revises la Guía de estilo de los foros.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 13-08-2010
Joe_Balda Joe_Balda is offline
Miembro
 
Registrado: ago 2010
Posts: 23
Poder: 0
Joe_Balda Va por buen camino
Muchas gracias por la respuesta, el primer codigo por lo que lei funciona a partir de la version 2.1 de firebird, yo utilizo la version 2.0.

El codigo que utiliza el MERGE, no me lo reconoce cuando lo quiero insertar en un STORED PROCEDURE o en el editor de sql. Utilizo IBOConsole.

Alguna idea de que me falta o que error estoy cometiendo?

saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
insert or update dependiendo de PK Joe_Balda Firebird e Interbase 0 13-08-2010 13:18:36
Trigger Before (Insert,update,delete)? estebanx MS SQL Server 2 25-05-2006 15:58:19
Problema con Insert y Update en ADOQuery Moises22 SQL 15 11-01-2006 07:57:13
UPDATE de un campo dependiendo del valor de un campo de otra tabla Javi2 SQL 5 18-04-2005 16:35:05
problemas con el insert y el update tiagor64 SQL 5 16-02-2005 17:46:09


La franja horaria es GMT +2. Ahora son las 22:12:36.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi