atomic function - Mailing list pgsql-general

From Mage
Subject atomic function
Date
Msg-id 430069DA.5070907@mage.hu
Whole thread Raw
Responses Re: atomic function  (Dennis Bjorklund <db@zigo.dhs.org>)
Re: atomic function  (Tino Wildenhain <tino@wildenhain.de>)
List pgsql-general
       Hello!

What's wrong with this function?

public | common_adviewnum_increase | integer          | bigint,
character varying | postgres | plpgsql  |
declare
        row record;
        result int;
begin
        select into row viewnum from common_adviewnum where adid = $1
and site = $2 and day = now()::date;
        if found then
                result = row.viewnum + 1;
                update common_adviewnum set viewnum = result where adid
= $1 and site = $2 and day = now()::date;
        else
                result = 1;
                insert into common_adviewnum (adid, site, day, viewnum)
values ($1, $2, now()::date, result);
        end if;
        return result;
end;

Every 2-3 day I get this in the server log:

2005-08-12 19:08:43: ERROR:  duplicate key violates unique constraint
"common_adviewnum_adid_site_day_index"
CONTEXT:  SQL statement "insert into common_adviewnum (adid, site, day,
viewnum) values ( $1 ,  $2 , now()::date,  $3 )"
PL/pgSQL function "common_adviewnum_increase" line 11 at SQL statement
select common_adviewnum_increase(820434,'H');

       Mage



pgsql-general by date:

Previous
From: Poul Møller Hansen
Date:
Subject: Re: Optimizing query
Next
From: Dennis Bjorklund
Date:
Subject: Re: Optimizing query