Svar efter nummer:
-
Ingen; hvis
S2
mislykkes, bliver hele transaktionen afbrudt og kan kun rulles tilbage. -
Der er formentlig en misforståelse. SQL-sætningen
BEGIN
der starter en transaktion er noget helt andet endBEGIN
der starter en PL/pgSQL-blok. Sidstnævnte gør ikke starte en transaktion.Hvis der ikke var nogen eksplicit SQL-kommando
BEGIN
, hver erklæring kører i sin egen transaktion ("autocommit").Alle udsagn i en funktion udføres i en enkelt transaktion.
-
Du kan ikke have
COMMIT
(ellerROLLBACK
) i en funktion. -
Ja. Dette er det samme spørgsmål som 1., kun negativt.