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

¿Como hacer un UPDATE global en varias tablas?

Estas en el tema de ¿Como hacer un UPDATE global en varias tablas? en el foro de Mysql en Foros del Web. Hola, necesito hacer un UPDATE global en varias tablas que están en una BD, solo necesito cambiar una columna que es común a varias tablas ...
  #1 (permalink)  
Antiguo 17/10/2012, 06:51
 
Fecha de Ingreso: mayo-2011
Mensajes: 102
Antigüedad: 13 años
Puntos: 0
Pregunta ¿Como hacer un UPDATE global en varias tablas?

Hola, necesito hacer un UPDATE global en varias tablas que están en una BD, solo necesito cambiar una columna que es común a varias tablas y en la mayoría es PRIMARY KEY.

¿Es posible esto?
Hasta ahora lo que logre es ubicar que tablas tienen ese campo mediante la siguiente query.
Código MySQL:
Ver original
  1. SELECT DISTINCT TABLE_NAME,COLUMN_NAME
  2.     FROM INFORMATION_SCHEMA.COLUMNS
  3.     WHERE COLUMN_NAME LIKE ('deviceID')
  4.         AND TABLE_SCHEMA='garage';

Pero de ahí a hacer un UPDATE no me animo siquiera a probar, porque es una BD que esta funcionando en un server remoto.
  #2 (permalink)  
Antiguo 17/10/2012, 07:08
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: ¿Como hacer un UPDATE global en varias tablas?

Ni se te ocurra hacer semejante atrocidad.
No puedo calificarla de otra forma.
Si lo que quieres hacer es modificar la estructura de las tablas (las PK y FK son parte de la estructura), esa no es la forma.
Por lo que intentas hacer, veo que no tienes los conocimientos fundamentales de las bases de datos, y te sugiero que antes de proceder a cosas como tales, leas y te interiorices de lo que es la administración y diseño de BB.DD.
Cosas como la que intentas sólo causarán desastres... si es que el servidor te permite hacerlo.

Empieza por el principio y explica por qué quieres hacer esa... absurda acción.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 17/10/2012, 07:10
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: ¿Como hacer un UPDATE global en varias tablas?

No hay manera de hacer un UPDATE global si por ello quieres decir que con una sola instruccion se actualizen todas...

Pero si se puede montar procedimientos con programación externa o propios que apartir de esa lista de campos que habilmente has obtenido ejecute una sentencia para cada tabla encontrada...

Yo por facilidad lo haria con programación externa, espera a ver si alguien te puede pasar un procedimento sql ...

Pero dices que vas a modificar primary keys, sabes que eso es muy peligroso y puede que no lo puedas hacer dependiendo de como tengas definidas las relaciones entre tablas...???
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 17/10/2012 a las 07:11 Razón: Enfatizar el ultimo parrafo
  #4 (permalink)  
Antiguo 17/10/2012, 08:02
 
Fecha de Ingreso: mayo-2011
Mensajes: 102
Antigüedad: 13 años
Puntos: 0
Respuesta: ¿Como hacer un UPDATE global en varias tablas?

Es que el moco no me lo mande yo; el problema es que dieron de alta de forma incorrecta a un cliente y pusieron el ID del cliente en donde va el numero de cliente, que en esa base son dos cosas distintas.
Ahora como yo soy el que esta a cargo del desarrollo de soft tengo que resolver el problema.

Probé con la mas pequeña de las tablas a mano y como dejarme me deja, pero son como 14 tablas y da para cometer errores y no la quiero embarrar mas.

Voy a ver si puedo hacer un backup antes de meter el dedo.
  #5 (permalink)  
Antiguo 17/10/2012, 08:11
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: ¿Como hacer un UPDATE global en varias tablas?

¿Por qué dar de baja al cliente y luego hacer una nueva alta?
Será más sencillo hacer un update sobre las FK para reasignarlas, que meterte a destruir las relaciones.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 17/10/2012, 08:42
 
Fecha de Ingreso: mayo-2011
Mensajes: 102
Antigüedad: 13 años
Puntos: 0
Respuesta: ¿Como hacer un UPDATE global en varias tablas?

Cita:
¿Por qué dar de baja al cliente y luego hacer una nueva alta?
Es que ese es el problema, no puedo dar de baja el cliente porque se pierde todo el histórico del mismo.

Cita:
Será más sencillo hacer un update sobre las FK para reasignarlas, que meterte a destruir las relaciones.
No se que son las FK,¿Acaso te refieres a las PRIMARY KEY?
Si es así, eso es lo que quiero hacer.

Edito:
Ya encontré lo que es FK, son Foreing Keys, y creo que esta base no tiene, solo tiene tablas con 5 o 6 PK.

Última edición por E_Blue; 17/10/2012 a las 08:47
  #7 (permalink)  
Antiguo 17/10/2012, 08:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: ¿Como hacer un UPDATE global en varias tablas?

Si confundes una PK con una FK estamos en problemas...

En principio, por lo que me dices, si das de baja un cliente y pierdes todo, entonces tienes definidas las tablas con la cláusula ON DELETE CASCADE. Si es así, para corregir el problema solamente deberías contar con su compañera: ON UPDATE CASCADE.
¿No es así?
En ese contexto (ON UPDATE CASCADE), lo único que hay que hacer es actualizar la tabla base (cleintes) para que la cascada de actualizaciones corrija el problema.
Si esto no se puede hacer, debo decirte que entonces necesitaríamos conocer algunos detalles más sobre el diseño de dependencias de esa base, o por lo menos entender cuál es la regla de negocio que hace que exista un ID_CLIENTE y además un COD_CLIENTE, que parecen solapar sus funciones.
¿Puedes explicar algo de eso?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 17/10/2012, 09:12
 
Fecha de Ingreso: mayo-2011
Mensajes: 102
Antigüedad: 13 años
Puntos: 0
Respuesta: ¿Como hacer un UPDATE global en varias tablas?

Es que no se borran los datos del cliente, lo que ocurre es que al crear un cliente nuevo se le debe asignar un ID nuevo y como ese campo es "unique" no se puede repetir por eso es que "se pierden" los datos históricos, porque pertenecen a un cliente dado de baja que tiene un ID distinto.

La base no la diseñe yo, no se que sentencias usaron para crearla.

Las tablas, hasta donde se, no están conectadas mas que por PK pero lo hace un soft externo, es decir, si tengo que buscar en la tabla de históricos tengo que pasarle las PK en el SELECT.

Por ejemplo

Código MySQL:
Ver original
  1. SELECT * FROM garage.historico WHERE clienteID='40404' AND codigoCliente='mbz308g'

El código de cliente es un código para que puedan acceder al sistema y se cambia cada cierto tiempo, el ID del cliente es fijo.
  #9 (permalink)  
Antiguo 19/10/2012, 21:53
 
Fecha de Ingreso: octubre-2012
Ubicación: Bogotá
Mensajes: 40
Antigüedad: 11 años, 6 meses
Puntos: 2
Respuesta: ¿Como hacer un UPDATE global en varias tablas?

existen procedimientos almacenados, haces uno que te haga toda la actualización y listo, después solo tienes que llamar el procedimiento

Etiquetas: global, select, tabla, update, campos
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 20:17.