Re: in Pl/PgSQL, do commit every 5000 records

From: Emi Lu <emilu(at)encs(dot)concordia(dot)ca>
To: Bruno Wolff III <bruno(at)wolff(dot)to>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: in Pl/PgSQL, do commit every 5000 records
Date: 2006-03-10 16:06:04
Message-ID: 4411A3EC.3080309@encs.concordia.ca
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi Bruno,

>You can't do commits inside of a function.
>

The example I have is:

CREATE OR REPLACE function test() returns boolean AS $$
DECLARE
... ...
counter INTEGER := 0;
BEGIN
... ...
query_value := ' .....' ;
OPEN curs1 FOR EXECUTE query_value;
LOOP
FETCH curs1 INTO studid;
EXIT WHEN NOT FOUND;

query_value := ' INSERT INTO ... ...';

EXECUTE query_value ;

counter := counter + 1 ;
IF counter%5000 = 0 THEN
counter := 0;
COMMIT;
END IF;

END LOOP;

CLOSE curs1;
...
END;

... ...

The above function works ok.

"can't do commits inside of a function " , do you mean although the
function complied ok and run successfully, but it did not really commit
insertion actions at every 5000 records?

>I think you are misremembering advice about not do inserts with a transaction per row which will have
>a lot of overhead for all of the commits.
>

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message A. Kretschmer 2006-03-10 16:08:48 Re: About updates
Previous Message Bruno Wolff III 2006-03-10 15:56:01 Re: in Pl/PgSQL, do commit every 5000 records