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

[SOLUCIONADO] Copiar todo el contenido de una fila para otra tabla

Estas en el tema de Copiar todo el contenido de una fila para otra tabla en el foro de Mysql en Foros del Web. Hola a todos, A ver si me pueden ayudar tengo dos tablas iguales, pero con diferentes nombres, tb_clientes y tb_clientes bajas, lo que necesito es ...
  #1 (permalink)  
Antiguo 23/01/2015, 09:23
Avatar de alexisverano  
Fecha de Ingreso: septiembre-2008
Ubicación: La Habana.Cuba
Mensajes: 298
Antigüedad: 16 años, 2 meses
Puntos: 36
Copiar todo el contenido de una fila para otra tabla

Hola a todos,

A ver si me pueden ayudar tengo dos tablas iguales, pero con diferentes nombres, tb_clientes y tb_clientes bajas, lo que necesito es cuando le doy baja a un cliente, eliminarlo de la tabla tb_clientes y pasar todo el contenido de su registro en la tb_clientes_baja.


Saludos,
  #2 (permalink)  
Antiguo 23/01/2015, 09:43
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Copiar todo el contenido de una fila para otra tabla

Si ambas tablas son iguales sólo necesitas el identificador (PK) de la tabla:
Código SQL:
Ver original
  1. INSERT INTO tb_clientes bajas
  2. SELECT *
  3. FORM tb_clientes bajas
  4. WHERE id_cliente = XX
Donde XX es el ID del cliente que quieres copiar.
Recién luego de eso realizas el correspondeinte DELETE.

De todos modos no es una metodología óptima, porque si en otras tablas existe ese ID del lciente como FK se producirán problemas de consistencia de datos (cuando no de integridad referencial).
Lo que en realidad suele hacerse es lo que se denomina "baja lógica", que consiste en poner un campo fecha_baja, nulable, donde le insertas la fecha de la baja cuando lo quieres eliminar. La única peculiaridad es que las consultas para verificar esa tabla deberán siempre incluir la condición
Código SQL:
Ver original
  1. SELECT ...
  2. FROM ...
  3. WHERE ...
  4.     AND id_cliente IS NOT NULL
, a fin de descartar los clientes que han sido dados de baja.
La ventaja de este método es que no tienes que replicar estructuras, y sigue siendo eficiente para buscar datos históricos de aquellos clientes que ya han sido dados de baja.

Bueno, eso queda a tu criterio.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: contenido, fila, registro, tabla, todo
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 01:12.