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/
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 |