Re: Commit / Rollback in PL/pgSQL ? - Mailing list pgsql-general

From Tino Wildenhain
Subject Re: Commit / Rollback in PL/pgSQL ?
Date
Msg-id 1097683441.1520.2221.camel@Andrea.peacock.de
Whole thread Raw
In response to Commit / Rollback in PL/pgSQL ?  (Michael Kleiser <mkl@webde-ag.de>)
List pgsql-general
Am Mi, den 13.10.2004 schrieb Michael Kleiser um 17:44:
> I found on
> http://www.physiol.ox.ac.uk/Computing/Online_Documentation/postgresql/plpgsql-porting.html
> that it is not poosible to use start or end a transaction in plpgsl.
>
> I tried to create a plplsql-function on PostgreSQL 8.0 beta 3
> I can comile
>
> CREATE OR REPLACE FUNCTION insert_many_commit( integer ) RETURNS void AS '
> DECLARE
>    counter INTEGER := $1;
> BEGIN
>    WHILE counter > 0 LOOP
>      INSERT INTO testtab (id, modification_date, description )
>          VALUES ( NEXTVAL(''seq_testtab''),now(), ''Eintrag von insert_many() '' || counter );
>      COMMIT;
>      counter := counter-1;
>    END LOOP;
>    RETURN;
> END;
> ' LANGUAGE 'plpgsql';
>
> So I think it's possible to have COMMIT / ROLLBACK in PLPgSQL

No, you cant. The whole execution is part of one statement which is
then automatically encapsulated in one transaction. Maybe the
checkpoint features of the upcoming pg8.x help you.

Otoh, why do you want to commit here anyway?

Regards
Tino


pgsql-general by date:

Previous
From: Ted Shab
Date:
Subject: Re: LISTEN/NOTIFY for lightweight replication
Next
From: Bruno Wolff III
Date:
Subject: Re: Proposal: GRANT cascade to implicit sequences