From: | "Ing(dot) Roberto Andrade Fonseca" <randrade(at)abl(dot)com(dot)mx> |
---|---|
To: | Sebastián Villalba <sebastian(at)fcm(dot)unc(dot)edu(dot)ar> |
Cc: | pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx |
Subject: | Re: [Pgsql-ayuda] Fución para insertar en 2 tablas simultaneamente |
Date: | 2002-06-07 03:56:25 |
Message-ID: | Pine.LNX.4.10.10206062252120.19424-100000@inter.interservice.com.mx |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola:
On Thu, 6 Jun 2002, Sebastián Villalba wrote:
> Perdón por la pregunta quizás por demás básica. En una función en sql y
> almacenada, yo necesito hacer lo siguiente: Una tabla "usuarios" con
> clave primaria id_usuario (int2)(nombre_usuario, login y password), otra
> tabla "socios", clave primaria id_socio (int4) y un campo
> id_usuario(int2)(domicilio, telefono, etc. etc. etc.). Entonces yo
> necesito dar de alta un nuevo socio, para eso, primero tengo que agregar
> en 1 al id_usuario en "usuarios", poner el login y passord, y después en
> la tabla "socios" agregar en 1 el id_socio (que es diferente al
> id_usuario porque no todos los usuarios son socios), poner el id_usuario
> que figura en la tabla "usuarios" y llenar el resto de los campos de la
> tabla "socios".
Existe una función en Postgres que te devuelve el valor del entero que definiste como serial, siempre y cuando hayas hecho una inserción que implique la creación de un nuevo valor para esa llave:
Con DBI, se hace de la siguiente mamera, aunque tu interés está en la sentencia sql:
# Armamos la consulta para inserción.
# Primero los datos personales
$sql = "insert into persona
(nombre, apellidos, direccion, colonia, ciudad_municipio, cp, id_estado, telefono, fax, email, id_grado, id_institucion)
values ('$nombre', '$apellidos', '$direccion', '$colonia', '$ciudad', '$cp', '$id_estado', '$telefono', '$fax', '$email', $id_grado, $id_institucion)";
#print "$sql<p>";
# Insertamos
$rv= $dbh->do($sql);
# Luego los de dependencia y área
# Primero recuperamos el id_persona
$sql = "select currval('persona_id_persona_seq')";
#print "$sql<p>";
$sth = $dbh->prepare($sql);
$rv = $sth->execute;
($id_persona) = $sth->fetchrow_array;
# Lo pasamos como campo oculto
print hidden('id_persona',$id_persona);
...
Espero que te sirva y te quede claro.
Saludos,
Roberto Andrade Fonseca
randrade(at)abl(dot)com(dot)mx
From | Date | Subject | |
---|---|---|---|
Next Message | Felipe Fernandez | 2002-06-07 06:43:10 | [Pgsql-ayuda] windows y tcl |
Previous Message | Salvador Salazar (st-psi) | 2002-06-06 23:05:23 | Re: [Pgsql-ayuda] Fución para insertar en 2 tablas simultaneamente |