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