Visibilidad de Cambios en Datos

Regla de visibilidad de cambios en Postgres: durante la ejecución de una consulta, los cambios realizados por ella misma (vía funciones SQL O SPI, o mediante triggers) le son invisibles. Por ejemplo, en la consulta

   INSERT INTO a SELECT * FROM a
las tuplas insertadas son invisibles para el propio SELECT. En efecto, esto duplica la tabla dentro de sí misma (sujeto a las reglas de índice único, por supuesto) sin recursividad.

Pero hay que recordar esto sobre visibilidad en la documentación de SPI:

   Los cambios hechos por la consulta Q son visibles por las consultas que
   empiezan tras la consulta Q, no importa si son iniciados desde Q (durante
   su ejecución) o una vez ha acabado.

Esto es válido también para los triggers, así mientras se inserta una tupla (tg_trigtuple) no es visible a las consultas en un trigger BEFORE, mientras que esta tupla (recién insertada) es visible a las consultas de un trigger AFTER, y para las consultas en triggers BEFORE/AFTER lanzados con posterioridad!