INSERTE un número en una columna basado en otras columnas INSERTOS ANTERIORES

En PostgreSQL tengo esta tabla ... (hay una clave primaria en el lado izquierdo "timestamp02" que no se muestra en esta imagen, no se moleste, no es importante para el propósito de esta pregunta)

en la tabla anterior, todas las columnas se ingresan mediante consultas, excepto el "índice_tiempo", que me gustaría que se rellenara automáticamente mediante un disparador cada vez que se llena cada fila.

Este es el código para crear la misma tabla (sin ningún valor) para que todos puedan crearla usando el panel de consulta SQL de Postgre.

CREATE TABLE table_ebscb_spa_log02
(
  pcnum smallint,
  timestamp02 timestamp with time zone NOT NULL DEFAULT now(),
  fn_name character varying,
  "time" time without time zone,
  time_elapse character varying,
  time_type character varying,
  time_index real,
  CONSTRAINT table_ebscb_spa_log02_pkey PRIMARY KEY (timestamp02)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE table_ebscb_spa_log02
  OWNER TO postgres;

Lo que me gustaría que haga el gatillo es:

INSERTE un número en la columna "time_index" basado en los valores INSERTED de las columnas "fn_name" y "time_type" en cada fila.

Si ambos ("fn_name" y "time_type") hacen una combinación (por ejemplo, Check Mails - Start) que no existe en ninguna fila antes (arriba), entonces INSERTAR 1 en la columna "time_index",

Elif, ambos ("fn_name" y "time_type") hacen una combinación que existe en alguna fila antes (arriba), luego INSERTAN el número que sigue al anterior (arriba) en la columna "time_index".

(Por favor, mire la imagen de la tabla de ejemplo, este activador producirá cada cuadrado rojo resaltado en él)

He visto muchos videos tutoriales de PostgreSQL, he leído muchos manuales, incluidos estos

http://www.postgresql.org/docs/9.4/static/sql-createtrigger.html http://www.postgresql.org/docs/9.4/static/plpgsql-trigger.html

sin ningún resultado

He intentado hasta ahora esto para crear la función:

CREATE OR REPLACE FUNCTION on_ai_myTable() RETURNS TRIGGER AS $
DECLARE
t_ix real;
n int;

BEGIN
IF NEW.time_type = 'Start' THEN
    SELECT t.time_index FROM table_ebscb_spa_log02 t WHERE t.fn_name = NEW.fn_name AND t.time_type = 'Start' ORDER BY t.timestamp02 DESC LIMIT 1 INTO t_ix;
      GET DIAGNOSTICS n = ROW_COUNT;
        IF (n = 0) THEN 
        t_ix = 1;
        ELSE 
        t_ix = t_ix + 1;
        END IF;
END IF;
NEW.time_index = t_ix;
return NEW;
END
$
LANGUAGE plpgsql;

Y esto para crear la consulta:

CREATE TRIGGER on_ai_myTable
    AFTER INSERT ON table_ebscb_spa_log02
    FOR EACH ROW
    EXECUTE PROCEDURE on_ai_myTable();

Luego, cuando inserto manualmente los valores en la tabla, nada cambia (sin mensaje de error) la columna time_index simplemente permanece vacía, ¿qué estoy haciendo mal?

Por favor, un buen programador compañero de PostgreSQL podría echarme una mano, realmente he llegado a un punto muerto en esta tarea, tengo más ideas.

Gracias por adelantado

Respuestas a la pregunta(1)

Su respuesta a la pregunta