INSERIR um número em uma coluna com base em outras colunas OLD INSERTs

No PostgreSQL, tenho esta tabela ... (existe uma chave primária no lado esquerdo "timestamp02", que não é mostrada nesta imagem, por favor, não se preocupe, isso não é importante para o objetivo desta pergunta)

na tabela acima, todas as colunas são inseridas por meio de consultas, exceto o "time_index", que eu gostaria de ser preenchido automaticamente por meio de um gatilho cada vez que cada linha é preenchida.

Este é o código para criar a mesma tabela (sem nenhum valor) para que todos possam criá-la usando o painel de consulta SQL do 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;

O que eu gostaria que o gatilho fizesse é:

INSERIR um número na coluna "time_index" com base nos valores INSERTed das colunas "fn_name" e "time_type" em cada linha.

Se ambos ("fn_name" e "time_type") fizerem uma combinação (por exemplo, Check Mails - Start) que não existe em nenhuma linha antes (acima), insira 1 na coluna "time_index",

Se ambos ("fn_name" e "time_type") fizerem uma combinação existente em alguma linha antes (acima), insira o número após o número anterior (acima) na coluna "time_index".

(observe a imagem da tabela de exemplo, esse gatilho produzirá todos os quadrados destacados em vermelho)

Eu assisti muitos vídeos tutoriais do PostgreSQL, li muitos manuais, incluindo estes

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

sem nenhum resultado.

Eu tentei até agora isso para criar a função:

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;

E isso para criar a consulta:

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

Então, quando insiro manualmente os valores na tabela, nada muda (sem mensagem de erro) a coluna time_index permanece vazia, o que estou fazendo de errado ???

Por favor, algum bom programador do PostgreSQL poderia me dar uma mão, eu realmente cheguei ao ponto de morte nesta tarefa, tenho mais algumas idéias.

desde já, obrigado

questionAnswers(1)

yourAnswerToTheQuestion