Bases de Datos > MySQL
Cambiar valor de un campo y sus referencias
(1/1)
manix:
hola
pues en estos dias ando peleandome con dos bases de datos, la idea fusionarlas, el problema no es la estructura de la base de datos, pues las tablas y sus campos son los mismos, lo unico que cambia en la informacion. Entonces me he dado la tarea de unir esa informacion en una sola base de datos.
el punto esta es que hay datos que se repiten.. me explico:
base de datos #1
tabla personas:
id_p = number *aca hay una persona con el id_p = 10*
correo =varchar
tabla tareas
id_tarea = number
id_p = number
texto = varchar
base de datos #2
tabla personas:
id_p = number *aca hay una persona con que TAMBIEN TIENE el id_p = 10*
correo =varchar
tabla tareas
id_tarea = number
id_p = number *esa misma persona tiene referencia aca*
texto = varchar
entonces lo que quiero es que por medio de una consulta cambiarle el id repetido a la tabla personas, pero que al mismo tiempo se le cambie en las tablas donde hace refencia ese id, pero no se como hacerlo
me explico? muchas gracias de antemano!!!
saludos
F_Tanori:
Lo que quieres es cambiar el id nomas? o es el mismo id pero diferente persona? o es completamente el mismo registro?
Esto se puede hacer con una llave foranea con actualizacion en cascada
http://dev.mysql.com/doc/refman/5.0/es/ ... aints.html
La otra opcion es crear una columna Alternativa con el nuevo ID
Ejemplo:
--- Código: SQL ---ALTER TABLE personas ADD COLUMN NewID VARCHAR(10)
Ahora tendrias que actualizar la columna NewID
--- Código: SQL --- UPDATE personas p SET p.NewId=21 WHERE p.id_p=10 -- Segun los que vayas a modificar
Ahora actualizas las referencias utilizando el nuevo ID
--- Código: SQL ---UPDATE tareas t,personas p SET t.id_p = p.NewIdWHERE t.id_p = p.id_p AND (p.NewId IS NOT NULL ) AND TRIM(p.NewId )!=''
Despues de actualizar las referencias puedes actualizar el id_p de la tabla personas
--- Código: SQL --- UPDATE personas p SET p.id_p=p.NewId WHERE (p.NewId IS NOT NULL ) AND TRIM(p.NewId )!=''
Con estos pasos puedes actualizar la referencias espero se haya entendido y sea lo que estas buscando
Al fina puedes borrar la columna NewID
--- Código: SQL ---ALTER TABLE personas DROP COLUMN NewID
* Haz un respaldo o haz una base de datos de prueba, para que te des cuenta si las cosas funionan bien
Saludos
manix:
hola
mm que pena, dejame explicarme mejor
imagina un tabla que tiene un id, pero ese id se encuentra en muchas otras tablas, lo que quiero es que al cambiar ese id por el que yo quiera, pero al cambiar el id se pierden las refenrecias en las demas tablas que tenias referencia a ese id.. cierto?
hay alguna forma que al cambiar ese id tambien se cambie en las demas tablas donde se hace referencia?
espero esta vez se haya entendido mejor, muchas gracias por tu respuesta y tiempo
saludos
F_Tanori:
Ah por eso te decia como primer opcion seria crearle una llave foranea a cada una de las tablas hijas
http://dev.mysql.com/doc/refman/5.0/es/ ... aints.html
--- Código: Visual Basic ---ALTER TABLE tareas ADD CONSTRAINT FK_tareas FOREIGN KEY FK_tareas (id_p)REFERENCES persona (id_p)ON UPDATE CASCADE
Lo importante es ON UPDATE CASCADE, para que al actualizar la tabla Padre se actualicen todas las referencias
Saludos
manix:
hola
que interesante estas sentencias!! sale de maravilla, imaginate lo que es cambiar una a una las decenas de tablas que hace referecia ese id en una base de datos relativamente grande...
ha salido de maravilla, muchas gracias ;)
saludos
Navegación
Ir a la versión completa