Обсуждение: ROLLBACK in a function?
I understand that functions provide an implied transaction in PostgreSQL. Does that mean one can ROLLBACK/COMMIT within the body of a function? Rory -- Rory Campbell-Lange <rory@campbell-lange.net> <www.campbell-lange.net>
Rory Campbell-Lange <rory@campbell-lange.net> writes: > I understand that functions provide an implied transaction in > PostgreSQL. Not quite. Every SQL statement is executed in its own transaction if BEGIN/END are not explicitly used. A statment may cause zero, one or many function calls, but they will all execute in that transaction. > Does that mean one can ROLLBACK/COMMIT within the body of a > function? Not in current versions. -0Doug
On 28/05/03, Doug McNaught (doug@mcnaught.org) wrote:
> Rory Campbell-Lange <rory@campbell-lange.net> writes:
>
> > I understand that functions provide an implied transaction in
> > PostgreSQL.
>
> Not quite. Every SQL statement is executed in its own transaction if
> BEGIN/END are not explicitly used. A statment may cause zero, one or
> many function calls, but they will all execute in that transaction.
>
> > Does that mean one can ROLLBACK/COMMIT within the body of a
> > function?
>
> Not in current versions.
So in my (eg php) code I should do something like this psuedo code?
BEGIN WORK
select function ([params])
if
result == 0
then
rollback
else
commit
end if
END WORK
Rory
--
Rory Campbell-Lange
<rory@campbell-lange.net>
<www.campbell-lange.net>
> BEGIN WORK > select function ([params]) [...] > END WORK No need to rollback/commit if you are dealing with SELECTs that don't have row modifying side effects. Karsten -- GPG key ID E4071346 @ wwwkeys.pgp.net E167 67FD A291 2BEA 73BD 4537 78B9 A9F9 E407 1346
Karsten Hilbert <Karsten.Hilbert@gmx.net> writes: > > BEGIN WORK > > select function ([params]) > [...] > > END WORK > No need to rollback/commit if you are dealing with SELECTs > that don't have row modifying side effects. Right, but SELECTing a function can do anything. ;) -Doug