Antworten nach Nummer:
-
Nein; wenn
S2
fehlschlägt, wird die gesamte Transaktion abgebrochen und kann nur rückgängig gemacht werden. -
Wahrscheinlich liegt ein Missverständnis vor. Die SQL-Anweisung
BEGIN
das eine Transaktion startet, ist etwas ganz anderes alsBEGIN
das einen PL/pgSQL-Block startet. Letzteres nicht eine Transaktion starten.Wenn es keinen expliziten SQL-Befehl
BEGIN
gab , 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
COMMIT
haben (oderROLLBACK
) in einer Funktion. -
Ja. Dies ist die gleiche Frage wie 1., nur verneinend.