Re: problemas con trigger

From: Raul Andres Gutierrez Alejo <raulandrez(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: problemas con trigger
Date: 2012-11-06 16:47:29
Message-ID: 50993F21.6020805@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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

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

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Juan 2012-11-06 16:53:19 Re: problemas con trigger
Previous Message Juan 2012-11-06 16:38:44 problemas con trigger