El uso en consola, funciona, pero si desearía ponerlo en una función, me sale error, he buscado documentacion y me indica que no se puede...

Cesar Ponte

Cesar Ponte

Pregunta
studenthace 4 años

El uso en consola, funciona, pero si desearía ponerlo en una función, me sale error, he buscado documentacion y me indica que no se puede poner un commit o rollback dentro de una funcion. Este es mi funcion, me sale el error, alguna idea de como controlar errores en una funcion un bloque de transacciones.

ERROR: terminación de transacción no válida

CONTEXT: función PL/pgSQL inline_code_block en la línea 7 en ROLLBACK

SQL state: 2D000

CREATE OR REPLACE FUNCTION TEST1 ()

RETURNS VOID

LANGUAGE 'plpgsql’

AS $$

BEGIN

INSERT INTO table1 VALUES (1); INSERT INTO table1 VALUES (2); INSERT INTO table1 VALUES (1); COMMIT;

EXCEPTION

WHEN OTHERS THEN

ROLLBACK;

END;$$;

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

    Oswaldo Rodríguez González

    teacherhace 4 años

    No necesitas agregarle COMMIT a la PL Si la PL llega hasta END implícitamente es un COMMIT.

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.