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