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

Insertar datos en 3 tablas

Estas en el tema de Insertar datos en 3 tablas en el foro de Bases de Datos General en Foros del Web. Hola a todos. Bueno , estoy realizando un pequeño proyecto donde tengo clientes y empleados que tienen distintos roles , el planteamiento que hice es ...
  #1 (permalink)  
Antiguo 31/05/2015, 21:45
 
Fecha de Ingreso: junio-2012
Mensajes: 46
Antigüedad: 11 años, 10 meses
Puntos: 5
Insertar datos en 3 tablas

Hola a todos.
Bueno , estoy realizando un pequeño proyecto donde tengo clientes y empleados que tienen distintos roles , el planteamiento que hice es este :
ya que empleados y clientes tienen prácticamente los mismos datos los uní en una tabla , estos se van a diferenciar por el rol

tabla user
-------------
id_user
email
password

tabla detalle
id_detalleUser
id_user
nombre
apellidos
telefono
etc.

rol
----------
id_rol
rol

user_rol
-----------
id_rol
id_user

bueno , está de esta manera. ¿está bien así? , ¿hay alguna manera más eficiente? bueno dicho esto , mi principal duda es que habiéndolo diseñado de esta manera, como puedo insertar datos en las tres tablas?. Lo ids son autogenerados y averiguando encontré que se podía hacer con una función de mysql "LAST_INSERT_ID()" y me ha quedado de esta manera , ahora cuando inserto , se están repitiendo registros

Código MySQL:
Ver original
  1. DELIMITER $$
  2.  
  3. CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_insertar_usuario`(
  4. _email varchar(100) , _password varchar(100) ,
  5. _nombre varchar(100) , _apellido varchar(100) , _dni varchar(45) ,
  6. _telefono varchar(45) , _direccion varchar(150) , _suscrito BIT(1) ,
  7. _activo BIT(1), _id_rol int
  8. )
  9. SET @last_ID = LAST_INSERT_ID();
  10. INSERT INTO usuario ( email , password) values (_email , _password);
  11. INSERT INTO detalle_usuario(id_usuario , nombre , apellido , dni ,
  12.                             telefono , direccion , suscrito , activo)
  13. values(@last_ID , _nombre , _apellido , _dni , _telefono ,
  14.        _direccion , _suscrito , _activo);
  15. INSERT INTO rol_usuario( id_rol , id_usuario)
  16. values (_id_rol , @last_ID);

Alguien que me eche un mano?
  #2 (permalink)  
Antiguo 31/05/2015, 22:14
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: Insertar datos en 3 tablas

El manual te puede ayudar...
LAST_INSERT_ID() devuelve el ultimo ID autincremental que se haya generado después de la ejecución exitosa de ese INSERT, y no antes.
Si lo ejecutas antes de ese INSERT su valor es cero, lo mismo que si lo ejecutas después de haber ejecutado otra sentencia tras la inserción.
Tampoco sirve para crear un tipo de dato. Eso no existe en MySQL.
__________________
¿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 31/05/2015, 23:24
 
Fecha de Ingreso: junio-2012
Mensajes: 46
Antigüedad: 11 años, 10 meses
Puntos: 5
Respuesta: Insertar datos en 3 tablas

Gracias por tomarte el tiempo de responder @gnzsoloyo
Le daré una revisada a ver ...
Por cierto a que te refieres en la última línea?

Etiquetas: local, mysql, tabla, tablas
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 13:40.