[funciones, bloques y exception] las consultas serán ignoradas hasta el final del bloque

From: "Milton Galo Patricio" <minoztro(at)gmail(dot)com>
To: Postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: [funciones, bloques y exception] las consultas serán ignoradas hasta el final del bloque
Date: 2007-01-12 14:21:10
Message-ID: 172699c50701120621yf1c356m5677eb5856ed6894@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

hola lista:

Tengo un problema al momento de tratar de levantar una exception
desde un trigger que tengo asignado al momento antes de insertar o
modificar un registro. La idea es la siguiente:

Tengo la siguiente función:

CREATE OR REPLACE FUNCTION cerrar_turno(fecha date, codigo_sucusal
"varchar", id_usuario "varchar")
RETURNS void AS
$BODY$BEGIN
insert into servidor_ventas_realizadas select $3, $1,
sum(total_involucra) from cierre_turno_total;
EXCEPTION
when others THEN
RAISE EXCEPTION '%',SQLERRM;
END;$BODY$
LANGUAGE 'plpgsql' VOLATILE;

Esta función lo que hace es un simple insert a la tabla
servidor_ventas_realizadas, a esta tabla le tengo asignado el
siguiente trigger:

CREATE OR REPLACE FUNCTION cierre_caja_verificacion()
RETURNS "trigger" AS
$BODY$BEGIN
IF NEW.total_venta IS NULL THEN
RAISE EXCEPTION 'No puede cerrar turno, debe tener al menos un
producto vendido';
END IF;
RETURN NEW;
END;$BODY$
LANGUAGE 'plpgsql' VOLATILE;

CREATE TRIGGER cierre_caja_verificacion
BEFORE INSERT OR UPDATE
ON servidor_ventas_realizadas
FOR EACH ROW
EXECUTE PROCEDURE cierre_caja_verificacion();

Ahora bien....cuando la funcion cerrar_turno inserta como NULL el
campo total_venta, la exception se levanta bien, pero cuando
nuevamente llamo a la funcion cerrar_turno me sale el siguiente error:

ERROR: transacción abortada, las consultas serán ignoradas hasta el
final del bloque de la transacción.

Después llamo nuevamente a la funcion cerrar_turno y me muestra bien
el mensaje de exception, pero nuevamente la llamo y me muestra el
mismo error.

En realidad no entiendo mucho en que parte me estoy equivocando, alguna idea?..

Agradeciendo vuestra ayuda,

--
Milton Inostroza Aguilera

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Rodrigo Gil Giuliano 2007-01-12 14:49:22 dimensiones de un array
Previous Message Fernando Aguada 2007-01-12 13:54:01 Diferencias entre el driver ODBC Postgresql 7.03 y el Driver ODBC Postgresql ANSI 8.02