Consulta sobre Trigger NEW / OLD

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

Responses

Browse pgsql-es-ayuda by date

  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