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

MySQL Insertar en una tabla y en otra relacionada por clave ajena

Estas en el tema de MySQL Insertar en una tabla y en otra relacionada por clave ajena en el foro de Bases de Datos General en Foros del Web. Hola, tengo dos tablas relacionadas, resumiendo, una con los datos de los clientes y otra con direcciones, al insertar los datos de un cliente, creo ...
  #1 (permalink)  
Antiguo 19/06/2008, 03:26
 
Fecha de Ingreso: mayo-2008
Mensajes: 18
Antigüedad: 16 años
Puntos: 0
MySQL Insertar en una tabla y en otra relacionada por clave ajena

Hola, tengo dos tablas relacionadas, resumiendo, una con los datos de los clientes y otra con direcciones, al insertar los datos de un cliente, creo que lo que debo hacer es agregarlos en las dos a la vez, porque necesito la clave de la nueva dirección para añadírsela como el campo Dirección de la tabla Clientes, que es la clave ajena que las relaciona.

Las tablas vienen a ser algo así:

CLIENTES
Nombre
Apellido
(...)
Dirección (clave ajena que relaciona con la otra tabla)

DIRECCIONES
Calle
Número
(...)

He estado buscando por internet y no he encontrado nada, también he mirado en la página de MySQL y no he visto nada. Siento si es una duda tonta que debería saber, en cuanto a base de datos sé lo básico.

Un saludo y muchas gracias por vuestro tiempo.

Última edición por Kandorf; 19/06/2008 a las 04:05
  #2 (permalink)  
Antiguo 19/06/2008, 04:12
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: MySQL Insertar en una tabla y en otra relacionada por clave ajena

Insertas primero la dirección y capturas el id, despues insertas el cliente con el id de la direccion.
No se como va el tema de transiciones en mysql... la idea es que todo se haga de forma atomica, es decir o insertas en las dos tablas o en ninguna.

Salu2
  #3 (permalink)  
Antiguo 19/06/2008, 06:45
 
Fecha de Ingreso: mayo-2008
Mensajes: 18
Antigüedad: 16 años
Puntos: 0
Respuesta: MySQL Insertar en una tabla y en otra relacionada por clave ajena

Hm, hm, muchas gracias por las molestias.
Eso es lo que he acabado haciendo, con transacciones (creo que se llamaba así), pero no lo he hecho muy profesional del todo, lo que no sé es capturar el ID de una manera limpia, te voy a contar cómo lo hago, que te vas a reir...

1- Inserto los nuevos datos en la tabla.
2- Hago un SELECT del ID de la tabla con un WHERE nombre_campo=valor & (...) así con todos los campos y valores.

No es una manera muy limpia, pero funciona, lo malo, es que puede dar la casualidad de que haya un cliente con exactamente los mismos datos (cosa inútil y que no debería pasar), y capture el ID del primer cliente, lo cual sería una cutrería, así que lo que hago es un "if (mysql_num_rows($datos)>1) (y muestro un mensaje de error y no continúo)" (uso php), lo cual es un tanto sucio.

En fin... habré rayado mucho al que me haya leído.

Un saludo y muchas gracias por vuestro tiempo.

Última edición por Kandorf; 19/06/2008 a las 06:46 Razón: Aclaración
  #4 (permalink)  
Antiguo 19/06/2008, 06:52
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: MySQL Insertar en una tabla y en otra relacionada por clave ajena

no trabajo con mysql, pero en la mayoria de las BDs está implementado el INSERT RETURN x;
Pregunta en el foro de mysql o busca algo asi.
Salu2
  #5 (permalink)  
Antiguo 19/06/2008, 08:53
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: MySQL Insertar en una tabla y en otra relacionada por clave ajena

mira este enlace:

para la API utilizamos con MySQL la función
mysql_insert_id()
Yo trabajo con PHP y recupero el autoincrementable de la última inserción con esa función. Tras la inserción pongo:
$ultimo = mysql_insert_id() ;

luego es fácil cargar el valor de $ultimo en la siguiente inserción.

http://dev.mysql.com/doc/refman/5.0/...insert-id.html
  #6 (permalink)  
Antiguo 19/06/2008, 08:58
 
Fecha de Ingreso: mayo-2008
Mensajes: 18
Antigüedad: 16 años
Puntos: 0
Respuesta: MySQL Insertar en una tabla y en otra relacionada por clave ajena

:O muchas gracias por vuestra ayuda.
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 08:07.