Hola On Tue, Nov 6, 2012 at 1:47 PM, Raul Andres Gutierrez Alejo < [email protected]> 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 > > >
