Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-es-ayuda by date

Next:From: marcos negriniDate: 2005-02-25 15:22:26
Subject: Re: postgres 8.0.1 win32
Previous:From: Fernando AguadaDate: 2005-02-25 14:44:50
Subject: Re: postgres 8.0.1 win32

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group