From: | "Dilm E(dot)I(dot)R(dot)L" <i(dot)dilm(at)yahoo(dot)es> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Consulta sobre Trigger NEW / OLD |
Date: | 2009-07-08 16:30:59 |
Message-ID: | 689228.19980.qm@web28108.mail.ukl.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
BEGIN
IF (TG_OP = 'INSERT') THEN
INSERT INTO movimiento (cod_movimiento, fec_movimiento, cod_transaccion, cod_documento, nro_documento, cod_entidad, cod_moneda, tipo_cambio, flag_anulado, fec_update)
VALUES(NEW.cod_compra, NEW.fec_compra, '01', NEW.cod_documento, NEW.nro_documento, NEW.cod_proveedor, NEW.cod_moneda, NEW.tipo_cambio, NEW.flag_anulado, NEW.fec_update);
END IF;
IF (TG_OP = UPDATE) THEN
INSERT INTO movimiento (cod_movimiento, fec_movimiento, cod_transaccion, cod_documento, nro_documento, cod_entidad, cod_moneda, tipo_cambio, flag_anulado, fec_update)
VALUES(NEW.cod_compra, NEW.fec_compra, '01', NEW.cod_documento, NEW.nro_documento, NEW.cod_proveedor, NEW.cod_moneda, NEW.tipo_cambio, NEW.flag_anulado, NEW.fec_update);
END IF;
RETURN NEW;
Cuando lleno la tabla compra se dispara el trigger a la tabla movimientos, pero aveces hay que modificar datos en compras y el trigger me crea un nuevo registro.. lo que quisiera saber es cuando se debe usar NEW y Cuando OLD?
Si deseo modificar un registro en compras (ese registro claro que existe ya en movimientos ya que se inserto al disparar el trigger cuando se lleno ese registro) tambien se puede modificar el registro en movimientos y no insertar uno nuevo..
PD: Nunca use trigger en ningun motor, recien los uso ahora en postgres, disculpen por la pregunta si es muy tonta..
From | Date | Subject | |
---|---|---|---|
Next Message | Ernesto Lozano | 2009-07-08 16:31:00 | Re: donde esta la BD? |
Previous Message | Yolanda Sanchez | 2009-07-08 16:29:17 | problema en un nodo de postgres en sun solaris cluster failover |