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 Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Cómo copiar todos los registros de una tabla a otra?

Hola, explico lo que quiero hacer:

Código:
tabla-A
 campo1
 campo2
 campo3
 campo4
 campo5

tabla-B
 campo1
 campo2
 campo3
 campo4
 campo5
Ambas tablas son iguales, para pasar todos los registros de una a otra se puede hacer algo como esto:
Código SQL [-]
insert into tabla-B  select * from tabla-A

Ahora bien, le ponemos un campo más a tabla-B y queda así:

Código:
tabla-B
 campo0 
 campo1
 campo2
 campo3
 campo4
 campo5
¿Cómo se podría hacer?, en SQL, ya que la sentencia va en un store procedure. Ni idea.

Uso Firebird 2.1

Edito:
Tampoco quisiera hacer un for select porque tendría que declarar todos los campos, y sería un inconveniente cada vez que se modificara la tabla, habría que modificar también el store procedure.
Responder Con Cita
  #2  
Antiguo 06-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Una pregunta amigo:
Siempre va a modificarse una de las tablas ?, me refiero a los campos.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 06-02-2012
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola Casimiro, cuando los campos son diferentes en las tablas, tienes que poner los que campos que coinciden con la tabla del Select, en tu ejemplo no entraría el Campo0 de tu tabla B.

Código SQL [-]

Insert Into tabla-B (campo1, campo2, campo3, campo4, campo5)  select * from tabla-A

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 06-02-2012
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.457
Poder: 20
newtron Va camino a la fama
Anda, eso me lo apunto yo también.

Gracias.
__________________
Be water my friend.
Responder Con Cita
  #5  
Antiguo 07-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Caral Ver Mensaje
Hola
Una pregunta amigo:
Siempre va a modificarse una de las tablas ?, me refiero a los campos.
Saludos
Hola, Caral, en principio las tablas son siempre iguales, salvo que en una de ellas hay un campo más, pero siempre será esa la diferencia. Puede ser, casi seguro, que dentro de poco tiempo haya que añadir algún campo más o varios, pero siempre serán iguales todos menos uno de ellos en la tabla B.


Cita:
Empezado por Caro Ver Mensaje
Hola Casimiro, cuando los campos son diferentes en las tablas, tienes que poner los que campos que coinciden con la tabla del Select, en tu ejemplo no entraría el Campo0 de tu tabla B.
Saluditos
Hola Caro, muy buena tu idea, aunque lo que no quiero es precisamente eso, tener que declarar los campos, porque irán ampliándose con el tiempo y habría que acordarse de modificar el store procedure.
Lo ideal sería poder recorrer los campos, al igual que se puede hacer desde delphi.
Pero bueno, tu idea es bastante cercana a lo que necesito, será lo que use si no se "nos" ocurre otra cosa
Responder Con Cita
  #6  
Antiguo 07-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
En principio no se si se tendrá claro o no que la BD1 contiene los mismos campos que la BD2.
Me imagino que lo que pretendes es que ese dato NO sea relevante, osea, que no importe si los campos son los mismos o no ya que el store procedure pretendes que siempre sea el mismo.
CREO, que la mejor manera seria primero hacer una comprobación de los campos, de las dos BD, esto se puede hacer mas o menos asi:

Código SQL [-]
SELECT RDB$FIELD_NAME
FROM RDB$RELATION_FIELDS
WHERE RDB$RELATION_NAME='BD1' AND RDB$RELATION_NAME='BD2';

Esto te mostrara los campos de cada tabla; Haciendo una comparación de los campos podrás crear tu sentencia, especificando el campo o los campos faltantes por medio de variables.

Por cierto, para saber mas datos de las tablas:

Código SQL [-]
SELECT RDB$FIELD_NAME AS field_name,
RDB$FIELD_POSITION AS field_position,
RDB$DESCRIPTION AS field_description,
RDB$DEFAULT_VALUE AS field_default_value,
RDB$NULL_FLAG AS field_not_null_constraint
FROM RDB$RELATION_FIELDS
WHERE RDB$RELATION_NAME='BD1';

Ya sabes, de esto no se, pero trato de aportarle algo a mi Maestro.
Saludos
__________________
Siempre Novato
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Opciones para copiar registros de una tabla a otra pmtzg Firebird e Interbase 19 10-08-2011 19:30:40
copiar registros de una tabla a otra Rofocale Varios 11 07-06-2011 14:23:55
copiar ciertos registros de una tabla a otra JESUSNET Conexión con bases de datos 2 07-06-2008 17:53:13
Como copiar los datos de una tabla a otra Shidalis Varios 2 21-07-2005 15:34:32
Copiar registros de una tabla a otra en Access con Delphi Gelmin Conexión con bases de datos 1 01-07-2005 13:35:04


La franja horaria es GMT +2. Ahora son las 01:18:55.


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