Re: problemas con trigger

From: Juan <smalltalker(dot)marcelo(at)gmail(dot)com>
To: Raul Andres Gutierrez Alejo <raulandrez(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: problemas con trigger
Date: 2012-11-06 16:54:13
Message-ID: CAKizN9w1Bhn8km1W65cKhGKyE-73zump46TD_=0iYQ_1Q+hHzg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola

On Tue, Nov 6, 2012 at 1:47 PM, Raul Andres Gutierrez Alejo <
raulandrez(at)gmail(dot)com> wrote:

> utiliza TG_OP para saber que esta haciendo
> http://www.postgresql.org/docs/9.2/static/plpgsql-trigger.html
>

Como veras lo uso.

>
>
> la estructura del triger debe algo parecida a:
> CREATE OR REPLACE FUNCTION tr_datos_d()
> RETURNS trigger AS
> $BODY$
> DECLARE
> BEGIN
> IF TG_OP = 'INSERT' THEN
> -- ...
> RETURN NEW;
> END IF;
> IF TG_OP = 'UPDATE' THEN
> --- ...
> RETURN NEW;
> END IF;
>
> IF TG_OP = 'INSERT' OR TG_OP = 'UPDATE' THEN
> -- ...
> RETURN NEW;
> END IF;
>
> IF TG_OP = 'DELETE'THEN
> --- ...
> RETURN OLD;
> END IF;
> END;$BODY$
> LANGUAGE plpgsql VOLATILE
> COST 100;
>
> El 06/11/2012 11:38 a.m., Juan escribió:
>
> Gente
>
> Tengo un trigger declarado en una tabla, declarada de la sig. manera
>
>
> -- Table: dato_d
>
> -- DROP TABLE dato_d;
>
> CREATE TABLE dato_d
> (
> id bigserial NOT NULL,
> fecha_alta timestamp without time zone NOT NULL,
> fecha_baja timestamp without time zone,
> fecha_ult_mod timestamp without time zone NOT NULL,
> usuario_alta character varying(50) NOT NULL,
> usuario_baja character varying(50),
> usuario_ult_mod character varying(50) NOT NULL,
> codigo character varying(30),
> inactivo integer,
> nombre character varying(255),
> id_dominio bigint,
> CONSTRAINT d_pkey PRIMARY KEY (id),
> CONSTRAINT sdgdgdfgdfgdfgdFOREIGN KEY (id_dominio)
> REFERENCES d (id) MATCH SIMPLE
> ON UPDATE NO ACTION ON DELETE NO ACTION
> )
> WITH (
> OIDS=FALSE
> );
> ALTER TABLE dato_d
> OWNER TO tsuser;
>
> -- Trigger: tr_datos_d on dato_d
>
> -- DROP TRIGGER tr_datos_dom ON dato_d;
>
> CREATE TRIGGER tr_datos_d
> BEFORE INSERT OR UPDATE OR DELETE
> ON dato_d
> FOR EACH ROW
> EXECUTE PROCEDURE tr_datos_d();
>
>
> PERO: en mi trigger tengo un if por delete or update or insert
>
> segun entendi el trigger llama con un "parametro" NEW u OLD
> representando la row que se altera,
> Para testear esta funcionalidad le hice un update
> update dato_d set fecha_baja = fecha_baja ;
> No modifico nada, pero lo que motiva este corre es que algunas veces
> parece que el OLD y el NEW vienen en null
> de manera que si intento acceder a el campo id me sale el error 'valor no
> inicializado'
>
> cualquier ayuda sera agradecido.
> saludos
>
>
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Arcel Labrada Batista 2012-11-06 19:44:24 Re: Re: [pgsql-es-ayuda] Backup en producción.
Previous Message Juan 2012-11-06 16:53:19 Re: problemas con trigger