PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

fonctions postgres et transactions avec BEGIN

Réponses par numéro :

  1. Non; si S2 échoue, toute la transaction est abandonnée et ne peut être annulée.

  2. Il y a probablement un malentendu. L'instruction SQL BEGIN qui démarre une transaction est quelque chose de très différent du BEGIN qui démarre un bloc PL/pgSQL. Ce dernier ne le fait pas démarrer une transaction.

    S'il n'y avait pas de commande SQL explicite BEGIN , chaque instruction s'exécute dans sa propre transaction ("autocommit").

    Toutes les instructions d'une fonction sont exécutées en une seule transaction.

  3. Vous ne pouvez pas avoir COMMIT (ou ROLLBACK ) dans une fonction.

  4. Oui. C'est la même question que 1., seulement dans le négatif.