Puedes probarlo tú mismo:
ADVERTENCIA: ya hay una transacción en progreso
No inicia ninguna (sub) transacción nueva ya que las transacciones anidadas no se implementan en PostgreSQL. (Sin pl/pgsql
embargo, puede hacer algo de magia en una función, por ejemplo, que imita ese comportamiento).
Con PostgreSQL 11, uno podría pensar que los nuevos procedimientos reales almacenados y su capacidad para manejar transacciones harían posibles las transacciones anidadas. Sin embargo, según la documentación , este no es el caso:
En los procedimientos invocados por el CALL
comando, así como en bloques de código anónimos ( DO
comando), es posible finalizar las transacciones usando los comandos COMMIT
y ROLLBACK
. Una nueva transacción se inicia automáticamente después de finalizar una transacción utilizando estos comandos, por lo que no existe un comando START TRANSACTION separado.