Re: Validacion en un trigger

From: "Fernando Aguada" <fernandoaguada(at)yahoo(dot)com(dot)ar>
To: <pgsql-es-ayuda(at)postgresql(dot)org>, "Chema Cortes" <chema(at)ls-l(dot)org>
Subject: Re: Validacion en un trigger
Date: 2005-02-25 15:05:19
Message-ID: 000e01c51b4b$6f2b8f30$fa00a8c0@fernandoa
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola,
Gracias por tu respuesta, pero vos sabes que sigue haciendo lo
mismo,
yo supongo que la razon es que esta dentro de una transaccion, y por esa
razon
la validacion anda la primera vez, y luego me vuelve los registros a los
valores
originales y por ende no se valida la segunda vez.
Gracias de todos modos.

----- Original Message -----
From: "Chema Cortes" <chema(at)ls-l(dot)org>
To: "Fernando Aguada" <fernandoaguada(at)yahoo(dot)com(dot)ar>
Sent: Friday, February 25, 2005 9:55 AM
Subject: Re: [pgsql-es-ayuda] Validacion en un trigger

Fernando Aguada escribió:
> Hola Tengo el siguiente problema: Cuando se inserta un registro en
> una tabla, que en este caso se llama bancos se dispara un trigger que
> realiza validaciones, todo se ejecuta bien, menos cuando hace una
> validacion sobre otra tabla que se llama cheques y valida que los
> cheques dados de baja coincidan con el total, debo aclarar que antes
> de agregar un registro en la tabla principal hago un* begin*, es como
> que los registros en la tabla de cheques de tercero desaparecen
> despues de ejecutarse la validacion la primera vez, si alguien tiene
> una idea? el codigo es el siguiente
>
> *select count(*) into wrec from chequest where ctracom=new.cnumtra
> and cori='B'; if wrec>00 then select sum(cimpo) into wsuma from
> chequest where ctracom=new.cnumtra and cori='B';* ** * if
> wsuma<>new.cimpcht then raise exception 'La Suma de Cheques
> Ingresados No Concide con el Importe * *
> en Cheques'; end if; end if; *

Creo que estás confundiendo el 'SELECT..INTO <table>' del SQL con el
'SELECT INTO <target>' del PL/pgSQL

Prueba con

select into wrec count(*) from chequest where ctracom=new.cnumtra and
cori='B';

if wrec>00 then
select into wsuma sum(cimpo) from chequest where ctracom=new.cnumtra
and cori='B';

if wsuma<>new.cimpcht then
raise exception 'La Suma de Cheques Ingresados No Concide con el
Importe en Cheques';
end if;
end if;

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message marcos negrini 2005-02-25 15:22:26 Re: postgres 8.0.1 win32
Previous Message Fernando Aguada 2005-02-25 14:44:50 Re: postgres 8.0.1 win32