Re: DUDA GRANDISIMA TRIGGER AYUDA GRACIAS

From: "Carlos" <carlosandre_m(at)yahoo(dot)com(dot)br>
To: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: DUDA GRANDISIMA TRIGGER AYUDA GRACIAS
Date: 2005-08-19 00:10:39
Message-ID: 002b01c5a452$71928b30$4700a8c0@Anubis
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


>
> Hola A Todos
>
> ayuda ayuda ayuDA ayUDA aYUDA AYUDA AYUDA
>
> Gracia por la ayuda prestada, ahora tengo un problema con un trigger.
> Resulta q tengo dos tablas una llamada CONTRATO y otra ASCENSO_CATEGORIA
> ahora necesito q cuando se inserte un nuevo registro en la tabla
> ascenso_categoria, de igual manera en la tabla contrato se genere un nuevo
> registro con los datos anteriores al contrato y con la categoria nueva Y
> tambien q el contrato anterior del cual tome los dato para el nuevo quede
en
> estado inactivo..
>
> Ejemplo.
>
> Tengo un Contrato Datos
>
> cedula Nombre Dedicacion Categoria estado
> Contrato
> 10 | Andres | Dedicacion 1 | Categoria 1 | t
>
> ahora inserto un ascenso por categoria a este empleado
>
> cedula nombre Categoria Actual Categoria Pasa
> 10 | Andres | Categoria 1 | Categoria 2
>
>
> ahora necesito que la tabla contrato se refleje de esta manera
>
> cedula Nombre Dedicacion Categoria estado
> Contrato
> 10 | Andres | Dedicacion 1 | Categoria 1 | f
> 10 | Andres | Dedicacion 1 | Categoria 2 | t
>
> por ahora lo hago trato de hacerlo con un trigger de esta manera...
>
> CREATE OR REPLACE FUNCTION ascenso_contrato_categoria() RETURNS TRIGGER AS
> $act_con_ascenso_categoria$
> BEGIN
> IF (TG_OP = 'INSERT') THEN
> INSERT INTO contrato SELECT OLD.con_emp_nidntfccion,
> OLD.con_tcon_cdigo, OLD.con_nmero, OLD.con_dd_cdigo, OLD.con_car_cdigo,
> OLD.con_pro_cdigo, OLD.con_fincio, OLD.con_fvncmnto, OLD.con_frtiro,
> OLD.con_ded_cdigo, NEW.con_cat_cdigo, OLD.con_sbsico, OLD.con_fpago,
> OLD.con_ppago, OLD.con_ppreba, OLD.con_mtivo, OLD.con_estado;
> RETURN NEW;
> END IF;
> RETURN NULL;
> END;
Desculpa por não falar Espanhol
espero que entenda
quando voce esta inserindo nao deve usar old e sim o new

>
> $act_con_ascenso_categoria$ LANGUAGE plpgsql;
> CREATE TRIGGER contrato_categoria
> AFTER INSERT ON ascenso_categoria
> FOR EACH ROW EXECUTE PROCEDURE ascenso_contrato_categoria();
>
> SACA ESTE ERROR
>
> ERROR: record "old" is not assigned yet
> DETAIL: The tuple structure of a not-yet-assigned record is
indeterminate.
> CONTEXT: PL/pgSQL function "ascenso_contrato_categoria" line 5 at SQL
> statement
>
>
Abraços a todos




_______________________________________________________
Yahoo! Acesso Grátis - Internet rápida e grátis.
Instale o discador agora! http://br.acesso.yahoo.com/

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Douglas Escobar 2005-08-19 00:33:04 RE: Lentitud en Postgres
Previous Message P@blo Villad@ 2005-08-18 23:09:46 DUDA GRANDISIMA TRIGGER AYUDA GRACIAS