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: | Re: Consulta sobre Trigger NEW / OLD |
Date: | 2009-07-08 17:13:47 |
Message-ID: | 718209.64302.qm@web28105.mail.ukl.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola. Tu problema no es tanto con las variables NEW y OLD, sino en la lógica que estás usando en tu función para responder a los diferentes eventos. Cuando alguien ejecuta un UPDATE en compras, no deberías introducir un nuevo registro en movimientos, sino actualizarlo. NEW y OLD sólo están inicializados a la vez cuando se trata de un UPDATE, pues te ayuda a conocer el estado actual y futuro del registro. En tu caso, deberías usar NEW para aplicar los cambios a la tabla movimientos, la cual me pregunto si es una copia de la primera y por qué razón lo sería.
Gracias por la respuesta, bueno si movimientos(tabla que recibe el trigger) es una copia de compras, movimientos me sirve para el kardex ya que mi tabla compras y ventas (con estructuras similares) llenan a movimientos por medio del trigger.
Entonces quedaria algo asi...?
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
UPDATE movimiento
SET cod_movimiento= NEW.cod_compra, fec_movimiento = NEW.fec_compra, cod_transaccion = '01', cod_documento = NEW.cod_documento, nro_documento = NEW.nro_documento, cod_entidad = NEW.cod_proveedor, cod_moneda = NEW.cod_moneda, tipo_cambio = NEW.tipo_cambio, flag_anulado = NEW.flag_anulado, fec_update = NEW.fec_update
END IF;
RETURN NEW;
Gracias...
From | Date | Subject | |
---|---|---|---|
Next Message | B CfaS | 2009-07-08 17:18:53 | RE: donde esta la BD? |
Previous Message | Fernando Moreno | 2009-07-08 16:55:33 | Re: Consulta sobre Trigger NEW / OLD |