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

duplicar registro en vez de borrar directamente

Estas en el tema de duplicar registro en vez de borrar directamente en el foro de Mysql en Foros del Web. Buenas tardes ¿Cómo podría pasar un registro completo de una tabla a otra? Las tablas son identicas, pero no quiero andar poniendo cada campo. ¿Hay ...
  #1 (permalink)  
Antiguo 29/10/2008, 11:21
Avatar de intergus  
Fecha de Ingreso: mayo-2007
Mensajes: 126
Antigüedad: 17 años
Puntos: 3
duplicar registro en vez de borrar directamente

Buenas tardes

¿Cómo podría pasar un registro completo de una tabla a otra? Las tablas son identicas, pero no quiero andar poniendo cada campo. ¿Hay algo mas automatico que recorra cada cada y lo monte en un array o algo así?

Basicamente lo que quiero hacer es que si alguien borra un registro, copiarlo a otra tabla de borrados y luego eliminarlo de la principal, pues quiero poder recuperarlo en alguna ocasión.

Las tablas son una copia exacta una de otra, solo que en la de borrador he quitado el autoincrement y los campos unicos pues no tienen sentido ya que me traería el registro con el id que tenga cuando se borró.


Mi idea inicial es hacer un select de la tabla original por el 'id' y luego hacer un INSERT, pero hay algo mas rapido que ir poniendo uno a uno los campos?? sobre todo que si algun dia añado un campo ya es bastante con añadirlo en las 2 tablas como para tener que estar cambiando el codigo php del select y el insert

Gracias Admito otras opciones para hacer eso.
  #2 (permalink)  
Antiguo 29/10/2008, 11:31
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años
Puntos: 50
Respuesta: duplicar registro en vez de borrar directamente

En vez de duplicar las tablas yo le recomendaria que le ponga un campo estado a la tabla original.

Cuando usted quiera eliminar un producto o un usuario o lo que este manejando no hace un delete del registro sino le cambia el estado a inactivo o a 2 o algo asi.

Claro que si lo que quiere es mandar los registros de una tabla a la otra haga esto.

Código:
INSERT INTO tabla SELECT * FROM tablaaa
  #3 (permalink)  
Antiguo 29/10/2008, 13:25
Avatar de intergus  
Fecha de Ingreso: mayo-2007
Mensajes: 126
Antigüedad: 17 años
Puntos: 3
Respuesta: duplicar registro en vez de borrar directamente

Gracias Helacer por la respuesta. No sabía que se podia hacer directamente
INSERT INTO tabla SELECT * FROM tablaaa

Imagino que tablaaa es la tabla original y debería completarlo con:
INSERT INTO tabla SELECT * FROM tablaaa WHERE id='$id'
¿no debería llevar paréntisis en algún sitio?

Por otra parte tu recomendación del check fue mi primera opción pero tengo en el código, decenas de paginas que hacen decenas de consultas distintas sacando diversa información y debería en cada una de ellas añadir aquello de hazlo pero si no está marcado como borrado, me parece mas facil trasladar el registro y sacarlo de la tabla original.
  #4 (permalink)  
Antiguo 29/10/2008, 14:44
Avatar de intergus  
Fecha de Ingreso: mayo-2007
Mensajes: 126
Antigüedad: 17 años
Puntos: 3
Respuesta: duplicar registro en vez de borrar directamente

Bueno ya he probado y funciona perfectamente con los parentesis

INSERT INTO tablaborrados (SELECT * FROM tablaoriginal WHERE id='$id')

pero....

Es posible ademas añadir algun campo mas, es decir, la idea es pasar el registro y que en la tablaborrados haya un campo fecha_borrado (timestamp) que se actualice con DEFAULT cuando se grabe el registro.
Como sería la sentencia???
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 19:53.