Un poco perdido creando una función.

From: Pablo Braulio <brulics(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Un poco perdido creando una función.
Date: 2007-12-19 10:52:35
Message-ID: 4768F7F3.3090709@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hola a todos.

Es la primera vez que, sin de momento ayuda, hago una función sin que
sea llamada por un trigger.

Este es el código:
- -----------------------

create table estudio(
id serial primary key,
nombre name);

create table oferta(
id serial primary key,
nombre name,
estudio int4 references estudio(id));

create table clienteoferta(
id serial primary key,
nombre name,
oferta int4 references oferta(id));

create language plpgsql;

create or replace function insertestudio(text) returns integer as $$
declare
nombestudio ALIAS FOR $1;
idestudio int4;
idoferta int4;
begin
insert into estudio(nombre) values(nombestudio);
insert into oferta(estudio) values(idestudio);
insert into clienteoferta(oferta) values(idoferta);
return estudio.id;
end;
$$ language plpgsql;
- -----------------------

Lo que pretendo y de momento no consigo es que al llamarse a la función,
esta haga un insert en la tabla estudio, recoja el valor del campo id
(en la tabla estudio) y la inserte en la tabla oferta en su campo
estudio. Luego lo mismo con la tabla clienteoferta. Finalmente, la
función debería devolver el valor id de la tabla estudio para procesarlo
con php.

Estoy tratando de hacer esto, pues hasta ahora esto lo tengo solucionado
con php, haciendo el insert a estudio, consultando el max(id), y luego
haciendo el otro insert con ese valor a oferta y sucesivamente.

Lo que no me gusta de esta forma de hacerla con php es que si dos
usuarios ejecutan el script que tenga este código al mismo tiempo,
seguramente dará un error, pues el max(id) no corresponderá.

¿Alguna idea?.

Gracias a todos.
- --

< ¡¡Nos vemos!! >
----------------------------
\
\
.::!!!!!!!:.
.!!!!!:. .:!!!!!!!!!!!!
~~~~!!!!!!. .:!!!!!!!!!UWWW$$$
:$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P
$$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
$$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
"*$bd$$$$ '*$$$$$$$$$$$o+#"
"""" """""""
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHaPfzK7lGsMchFswRAvAGAKCGzkOgq6zabQ8dfBTNvD0sA/cszgCguyp1
+1WU1C0YmTpk0JdHQlF+XvQ=
=r9A5
-----END PGP SIGNATURE-----

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gabriel Ferro 2007-12-19 11:42:06 Re: contar filas
Previous Message Julio Ali 2007-12-19 04:13:32 Fwd: un mensaje