Re: in Pl/PgSQL, do commit every 5000 records - Mailing list pgsql-general

From Emi Lu
Subject Re: in Pl/PgSQL, do commit every 5000 records
Date
Msg-id 4411A3EC.3080309@encs.concordia.ca
Whole thread Raw
In response to Re: in Pl/PgSQL, do commit every 5000 records  (Bruno Wolff III <bruno@wolff.to>)
Responses Re: in Pl/PgSQL, do commit every 5000 records  (Emi Lu <emilu@encs.concordia.ca>)
Re: in Pl/PgSQL, do commit every 5000 records  ("Florian G. Pflug" <fgp@phlo.org>)
List 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.
>



pgsql-general by date:

Previous
From: Bruno Wolff III
Date:
Subject: Re: in Pl/PgSQL, do commit every 5000 records
Next
From: "A. Kretschmer"
Date:
Subject: Re: About updates