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