Ver Mensaje Individual
  #5 (permalink)  
Antiguo 05/10/2010, 14:04
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 8 meses
Puntos: 20
Respuesta: Debería usar un Stored Procedure?

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Bueno, en ese contexto, lo que más te conviene es usar un stored procedure, ya que los datos a ingresar en las tres tablas son diferentes. No hay modo de administrar eso por un TRIGGER, ya que un TRIGGER sólo puede recibir como parámetros los datos de su propia tabla.
El único inconveniente para la codificación de un SP así es la cantidad de datos a ingresar, pero eso no es un limtante.
Gracias gnzsoloyo,

El SP, sería así?

Código SQL:
Ver original
  1. CREATE PROCEDURE nuevoUsuario (
  2. @user_id INT,
  3. @user_login VARCHAR(25),
  4. @user_pass VARCHAR(30),
  5. @user_activation_key VARCHAR(40),
  6. @user_name VARCHAR(30),
  7. @user_mail VARCHAR(45),
  8. @user_birthday DATE,
  9. @user_sexo CHAR(1),
  10. @user_pais SMALLINT,
  11. @fecha_registro TIMESTAMP,
  12. @ip_registro VARCHAR(15)
  13. )
  14.  
  15. BEGIN
  16. INSERT INTO tbl_user (user_login,user_pass,user_activation_key) VALUES (@user_login,@user_pass,@user_activation_key);
  17.  
  18. INSERT INTO tbl_user_personal (user_id,user_name,user_mail,user_birthday,user_sexo,user_pais) VALUES (@user_id,@user_name,@user_mail,@user_birthday,@user_sexo,@user_pais);
  19.  
  20. INSERT INTO tbl_registro (user_id,fecha_registro,ip_registro) VALUES (@user_id,now(),@ip);
  21. END

El problema que tengo es como sé el user_id de los dos últimos inserts. Ya que al hacer el primer insert, se crea una nueva fila en la tbl_user, la cual tiene una PK que es el user_id. Pues como diablos hago para que los dos inserts siguientes usen el user_id que se acaba de crear en la tbl_user?


¿Alguien sabe y puede ayudarme?

Muchas gracias de antemano