What if the select calling my function is not in it's own explicit transaction block? Thanks Craig ----- Original Message ----- From: "Jaime Casanova" <systemguards@xxxxxxxxx> To: "Craig Bryden" <postgresql@xxxxxxxxxxxx> Cc: "pgsql" <pgsql-general@xxxxxxxxxxxxxx> Sent: Tuesday, July 12, 2005 7:37 PM Subject: Re: Transaction Handling in pl/pgsql On 7/12/05, Craig Bryden <postgresql@xxxxxxxxxxxx> wrote: > Hi > > I am trying to get a better understanding of how transactions work in > pl/pgsql functions. I found the following text in the help: > "It is important not to confuse the use of BEGIN/END for grouping statements > in PL/pgSQL with the database commands for transaction control. PL/pgSQL's > BEGIN/END are only for grouping; they do not start or end a transaction" > but I am still a bit confused. > > Suppose I have a function that will be called from an application. Will all > the statements in the function be rolled back if the last one generates an > exception? or do I need to add code to a function to make that happen? > > suppose you have: select your_function(); your_function adds some rows but the last one gives an error, because all statements that are out of a transaction block are in its own transaction the select calling your_function is inside a transaction... so, the answer is yes... the statements inside the function will be rolled back -- regards, Jaime Casanova (DBA: DataBase Aniquilator ;) ---------------------------(end of broadcast)--------------------------- TIP 1: if posting/reading through Usenet, please send an appropriate subscribe-nomail command to majordomo@xxxxxxxxxxxxxx so that your message can get through to the mailing list cleanly