Risposte per numero:
-
No; se
S2non riesce, l'intera transazione viene interrotta e può essere solo annullata. -
Probabilmente c'è un malinteso. L'istruzione SQL
BEGINche avvia una transazione è qualcosa di completamente diverso daBEGINche avvia un blocco PL/pgSQL. Quest'ultimo non avviare una transazione.Se non esiste un comando SQL esplicito
BEGIN, ogni istruzione viene eseguita nella propria transazione ("autocommit").Tutte le istruzioni in una funzione vengono eseguite in un'unica transazione.
-
Non puoi avere
COMMIT(oROLLBACK) in una funzione. -
Sì. Questa è la stessa domanda della 1., solo negativa.