A mi me queda una duda, entonces, las funciones son de inicio a fin transaccionales? ya que usan el BEGIN?

Juan José Vargas Fletes

Juan José Vargas Fletes

Pregunta
studenthace 4 años

A mi me queda una duda, entonces, las funciones son de inicio a fin transaccionales? ya que usan el BEGIN?

4 respuestas
para escribir tu comentario
    Oswaldo Rodríguez González

    Oswaldo Rodríguez González

    teacherhace 4 años

    Todas las FUNCTION son transaccionales, pero Postgresql tiene otro tipo de PLs. Se llaman PROCEDURE, una muy sencilla se puede crear así:

    CREATE PROCEDURE tu_procedure() LANGUAGE plpgsql AS $$ DECLARE <variables> BEGIN <hacer algo> COMMIT; END $$;

    Cómo ves, se parece mucho a las PL FUNCTION, pero ejecutan diferente:

    CALL tu_procedure();

    La diferencia fundamental en PROCEDURE es que cuando ejecutas COMMIT, todo lo que se ha ejecutado hasta el momento queda definitivo, y puedes seguir ejecutando más código o incluso hacer llamado recursivo.

    En una FUNCTION normal, solo se aplican los cambios cuando llegue a END, incluso si hay recursividad.

    Juan José Vargas Fletes

    Juan José Vargas Fletes

    studenthace 4 años

    Wow, existe alguna forma de que no toda la función sea transaccional? Solo alguna parte en específico de la función?

    Oswaldo Rodríguez González

    Oswaldo Rodríguez González

    teacherhace 4 años

    Si, desde que BEGIN se ejecuta, todo lo que venga en adelante será esa misma transacción, hasta que ejecutes un COMMIT o un ROLLBACK . Si no ejecutas nada pasado un tiempo de inactividad, la base de datos asume un ROLLBACK

    Oswaldo Rodríguez González

    Oswaldo Rodríguez González

    teacherhace 4 años

    Si así es, BEGIN indica que inicia la transacción.

Curso de PostgreSQL

Curso de PostgreSQL

Administra bases de datos con PostgreSQL, desde instalación y configuración hasta la creación de réplicas y gestión de backups. Aprende sobre PL/SQL, triggers, transacciones y más en un entorno profesional.

Curso de PostgreSQL
Curso de PostgreSQL

Curso de PostgreSQL

Administra bases de datos con PostgreSQL, desde instalación y configuración hasta la creación de réplicas y gestión de backups. Aprende sobre PL/SQL, triggers, transacciones y más en un entorno profesional.