PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Postgres-Funktionen und -Transaktionen mit BEGIN

Antworten nach Nummer:

  1. Nein; wenn S2 fehlschlägt, wird die gesamte Transaktion abgebrochen und kann nur rückgängig gemacht werden.

  2. Wahrscheinlich liegt ein Missverständnis vor. Die SQL-Anweisung BEGIN das eine Transaktion startet, ist etwas ganz anderes als BEGIN 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.

  3. Sie können kein COMMIT haben (oder ROLLBACK ) in einer Funktion.

  4. Ja. Dies ist die gleiche Frage wie 1., nur verneinend.