Отговори по номера:
-
Не; ако
S2
не успее, цялата транзакция се прекъсва и може само да бъде върната назад. -
Вероятно има недоразумение. SQL изразът
BEGIN
който стартира транзакция е нещо съвсем различно отBEGIN
който стартира PL/pgSQL блок. Последното не започнете транзакция.Ако няма изрична SQL команда
BEGIN
, всяко изявление се изпълнява в собствена транзакция („автоматично подаване“).Всички изрази във функция се изпълняват в една транзакция.
-
Не можете да имате
COMMIT
(илиROLLBACK
) във функция. -
да Това е същият въпрос като 1., само че е отрицателен.