On Saturday 30 June 2007 23:52, Postgres User wrote: > How about this scenario: > > func A() > > begin > x = func B(); > y = func C(); > > z = func D(); > > end > > Where func A, B, C, and D all update the db. If a funciton is raised > in func D(), will all the transactions in the other children be rolled > back? > Or do I need to add code to enable this? (Noted correction in other reply). It will be rolled back. When you don't begin a transaction explicitly, postgresql creates one implicitely when you execute a function. So, calling a function will always be atomic.