Re: Implementing replace function

From: Alexander Farber <alexander(dot)farber(at)gmail(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: Implementing replace function
Date: 2010-10-31 17:28:56
Message-ID: AANLkTikt9NROCRxXRYhefbhXuStJpFNHXsXP+VcST45G@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

I've created a function now (below) and can call it as well,
but how can I see it at the psql prompt? Is there a \d command
for that or should I dump the database to see my declarations?

And is my function atomic? I.e. can't it happen, that FOUND
is not true, but then another session calls a INSERT inbetween?

pref=> create or replace function pref_update_users(_id varchar,
pref(> _first_name varchar, _last_name varchar, _female boolean,
pref(> _avatar varchar, _city varchar, _last_ip inet)
returns void as $BODY$
pref$> BEGIN
pref$>
pref$> update pref_users set
pref$> first_name = _first_name,
pref$> last_name = _last_name,
pref$> female = _female,
pref$> avatar = _avatar,
pref$> city = _city,
pref$> last_ip = _last_ip
pref$> where id = _id;
pref$>
pref$> IF NOT FOUND THEN
pref$> insert into pref_users(id, first_name,
pref$> last_name, female, avatar, city, last_ip)
pref$> values (_id, _first_name, _last_name,
pref$> _female, _avatar, _city, _last_ip);
pref$> END IF;
pref$> END;
pref$> $BODY$ language plpgsql;
CREATE FUNCTION

Thanks and merry Halloween
Alex

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Rob Sargent 2010-10-31 17:34:49 Re: Implementing replace function
Previous Message Tom Lane 2010-10-31 17:19:14 Re: NOT IN (NULL) ?