Función updating(column_name)

Función updating(column_name)

Buenas tardes

Me encuentro realizando una migración de Oracle 9i a PostgreSQL 9.1 y me encontré con un Trigger en Oracle que contiene un condicional parecido al siguiente:

IF UPDATING('nombre_campo') THEN
[Bloque de sentencias SQL]
ELSE
[Otro Bloque de sentencias SQL]
END IF

La función UPDATING(column_name) se utiliza para saber si se está actualizando un campo en específico de la tabla asociada al Trigger.

Mis dudas son las siguientes, ¿Existe en PostgreSQL una función equivalente?. Ó ¿La implemento con condicionales preguntando si la acción es de actualización y la variable NEW.[nombre_campo] es distinto de NULL?

Espero me puedan ayudar y muchas gracias de antemano........

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Re: Función updating(column_name)

Hola fmbs79.

Lo cierto es que tienes varias opciones:

1. Si el trigger que vas a crear en PostgreSQL ya está vinculado a la operación de UPDATE, puedes determinar que se lance cuando determinados campos cambien:

CREATE TRIGGER update_mitabla_trigger
  BEFORE UPDATE
  ON mitabla
  FOR EACH ROW
  WHEN (old.micampo IS DISTINCT FROM new.micampo)
  EXECUTE PROCEDURE mitrigger();

2. Si lo que tienes es un trigger genérico que se puede lanzar al: actualizar, insertar, etc. puedes discriminar internamente cuál fue la operación que lo "invocó", estableciendo dentro de la función que invoca el trigger:

IF ((TG_OP = 'UPDATE') AND (new.micampo IS DISTINCT FROM OLD.micampo)) THEN
  ...
END IF;

Un saludo.

Función updating(column_name)

Muchisimas gracias doctore!!. Fue de gran utilidad tu aporte.

Enviar nuevo comentario

  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><h2><pre>
  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato

Image CAPTCHA
Enter the characters shown in the image.