Você pode fazer begin; savepoint foo; O início;" será um no-op se já houver uma transação. Veja também:https://stackoverflow.com/a/28802471/435563