Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/05/2015, 21:45
tommy_tony
 
Fecha de Ingreso: junio-2012
Mensajes: 46
Antigüedad: 11 años, 11 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?