Cita:
Iniciado por gnzsoloyo La respuesta básica es si, te convendría si los parámetros de los inserts no son compartidos.
Pero si las otras dos tablas toman datos que ya están en la primera o son producidos por ella (por ejemplo, el ID si es numérico) es posible que con un TRIGGER sea suficiente.
¿Cuál es el caso? Danos un poquito de detalles respeto de los parámetros y cómo se reparten.
Buenas gnzsoloyo,
La función que inserta en las tres tablas es la siguiente:
Código PHP:
Ver originalpublic function addNewUser($nombre,$usuario,$password,$correo,$pais,$birthday,$sexo,$userReferido){
$this->_nombre=$nombre;
$this->_usuario=$usuario;
$this->_password=$password;
$this->_correo=$correo;
$this->_pais=$pais;
$this->_birthday=$birthday;
$this->_sexo=$sexo;
$this->_userReferido=$userReferido;
$this->_userKey = $this->randomKeygen($length=10);
$ip=getRealIP();
$this->_userId=1; /*hardcore */
// Inserta datos en la TBL_USERS
$query = "INSERT INTO tbl_user (user_login,user_pass,user_activation_key) VALUES (:user_login,:user_pass,:user_activation_key)";
$comando = $this->_con->prepare($query);
$comando->execute(array(':user_login'=>$this->_usuario
, ':user_pass'=>$this->_password,
':user_activation_key'=>$this->_userKey));
// Inserta datos en la TBL_USERS_PERSONAL
$query = "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)";
$comando = $this->_con->prepare($query);
$comando->execute(array(':user_id'=>$this->_userId
, ':user_name'=>$this->_nombre,
':user_mail'=>$this->_correo,
':user_birthday'=>$this->_birthday,
':user_sexo'=>$this->_sexo,
':user_pais'=>$this->_pais));
// Inserta datos en la TBL_REGISTRO
$query = "INSERT INTO tbl_registro (user_id,fecha_registro,ip_registro) VALUES (:user_id,now(),:ip)";
$comando = $this->_con->prepare($query);
$comando->execute(array(':user_id'=>$this->_userId
, ':ip'=>$ip));
}
Primero inserto en la
TBL_USERS la cual tiene un campo
user_id es autoincremental y PK.
El problema está en las dos siguientes inserciones que dependen del valor del
user_id insertado en la
TBL_USERS para luego en las otras dos tablas poder ingresarlo (de ahí la relación de FK).
En el ejemplo lo he puesto "hardcore" este valor (linea 13).
Te pego el diseño de las tablas para que lo veas mas claro.
Aprovecho para preguntarte si las dos claves foráneas de las tablas
USER_PERSONAL y
REGISTRO, deberían ser también primarias?...
Muchas gracias de antemano!