PL/pgSQL Problem - Mailing list pgsql-general

From Ron St-Pierre
Subject PL/pgSQL Problem
Date
Msg-id 44DA1C4E.4040404@shaw.ca
Whole thread Raw
Responses Re: PL/pgSQL Problem  (Michael Fuhr <mike@fuhr.org>)
Re: PL/pgSQL Problem  ("Merlin Moncure" <mmoncure@gmail.com>)
List pgsql-general
Hi, I'm having a problem with one of my functions, where I delete all
rows containing a particular date and then re-insert a row with that
same date. When I try this I get a constraint error. This just started
recently, after upgrading our database from 7.4 to 8.1.4 (now on RH EL).

here's the function:
CREATE OR REPLACE FUNCTION updatesystemCounts() RETURNS void AS '
    DECLARE
        compDate DATE;
        currCount INT;
    BEGIN
        compDate := current_date::date;
        LOOP
            DELETE FROM dm.systemCounts WHERE updateDate::date =
compDate::date;
            INSERT INTO dm.systemCounts (updateDate) VALUES
(compDate::date);
            .............

and here's the error:
ERROR:  duplicate key violates unique constraint "systemcounts_pkey"
CONTEXT:  SQL statement "INSERT INTO dm.systemCounts (updateDate) VALUES ( $1 ::date)"
PL/pgSQL function "updatesystemcounts" line 8 at SQL statement

The only explanation I can think of is that maybe the newer version of
postgres needs a COMMIT inside the function.

Any ideas?

Thanks

Ron St.Pierre

pgsql-general by date:

Previous
From: "Merlin Moncure"
Date:
Subject: Re: psql/readline clears screen
Next
From: Michael Fuhr
Date:
Subject: Re: PL/pgSQL Problem