Antworten nach Nummer:
-
Nein; wenn
S2fehlschlägt, wird die gesamte Transaktion abgebrochen und kann nur rückgängig gemacht werden. -
Wahrscheinlich liegt ein Missverständnis vor. Die SQL-Anweisung
BEGINdas eine Transaktion startet, ist etwas ganz anderes alsBEGINdas einen PL/pgSQL-Block startet. Letzteres nicht eine Transaktion starten.Wenn es keinen expliziten SQL-Befehl
BEGINgab , jede Anweisung läuft in einer eigenen Transaktion („autocommit“).Alle Anweisungen in einer Funktion werden in einer einzigen Transaktion ausgeführt.
-
Sie können kein
COMMIThaben (oderROLLBACK) in einer Funktion. -
Ja. Dies ist die gleiche Frage wie 1., nur verneinend.