
Cesar Ponte
PreguntaEl 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;$$;
Oswaldo Rodríguez González
No necesitas agregarle COMMIT a la PL Si la PL llega hasta END implícitamente es un COMMIT.