Error en trigger
Publicado por Elio Gabriel (2 intervenciones) el 05/07/2018 03:51:57
Hola a todos y gracias de antemano. Estoy desarrollando una base de datos en la cual tengo que controlar las divisas que utiliza el sistema. para lo cual me valgo de una tabla denominada "privado.divisas" como se puede observar en la siguiente imagen:

Solo una moneda puede ser la local, para ello se debe colocar un TRUE en el campo "dvs_local" y FALSE para el resto de los registros en le mencionado campo. Ademas de colocar la paridad de la misma en 1. Todo esto lo intento realizar por medio de un trigger, como se muestra a continuación:
Y la función del trigger es la siguiente:
EL problema es que cuando pretendo modificar alguna divisa y seleccionarla como local me aparece el siguiente error:

Según mi parecer no veo error. Desde ya gracias por su atención. Saludos.

Solo una moneda puede ser la local, para ello se debe colocar un TRUE en el campo "dvs_local" y FALSE para el resto de los registros en le mencionado campo. Ademas de colocar la paridad de la misma en 1. Todo esto lo intento realizar por medio de un trigger, como se muestra a continuación:
1
2
3
4
5
CREATE TRIGGER divisas_local_trg
AFTER UPDATE
ON privado.divisas
FOR EACH STATEMENT
EXECUTE PROCEDURE privado.divisas_local_fnc();
Y la función del trigger es la siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE OR REPLACE FUNCTION privado.divisas_local_fnc()
RETURNS trigger AS
$BODY$
declare
filtro varchar(150);
begin
filtro := old.dvs_nombre;
if new.dvs_local = true then
update privado.divisas set dvs_local = not(new.dvs_local) where dvs_nombre <> filtro;
new.dvs_paridad = 1;
end if;
return new;
end
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION privado.divisas_local_fnc()
OWNER TO costos_industriales;
EL problema es que cuando pretendo modificar alguna divisa y seleccionarla como local me aparece el siguiente error:

Según mi parecer no veo error. Desde ya gracias por su atención. Saludos.
Valora esta pregunta


0