番号による回答:
-
いいえ;
S2
の場合 失敗すると、トランザクション全体が中止され、ロールバックすることしかできません。 -
おそらく誤解があります。 SQLステートメント
BEGIN
トランザクションを開始するのは、BEGIN
とはまったく異なります。 PL/pgSQLブロックを開始します。後者はしません トランザクションを開始します。明示的なSQLコマンドがなかった場合
BEGIN
、すべてのステートメントは独自のトランザクション(「自動コミット」)で実行されます。関数内のすべてのステートメントは、単一のトランザクションで実行されます。
-
COMMIT
を持つことはできません (またはROLLBACK
)関数内。 -
はい。これは1.と同じ質問ですが、否定的なものだけです。