Pessoal,
estou tentando fazer um particionamento de tabelas por mes e ano, mas
não estou conseguindo utilizar a variavel declarada na clausula from. Na
realidade a variavel S_TABELA seria o nome da tabela e a variavel S_INDICE o
nome do indice.
CREATE OR REPLACE FUNCTION log_historico()
RETURNS trigger AS $$
DECLARE
S_TABELA CHAR(30) := "log_"+(EXTRACT(MONTH FROM NEW.data) + EXTRACT(year
FROM NEW.data));
S_INDICE CHAR(30) := "idx_log_"+(EXTRACT(MONTH FROM NEW.data) +
EXTRACT(year FROM NEW.data));
BEGIN
IF TG_OP = 'INSERT' THEN
BEGIN
INSERT INTO S_TABELA
VALUES (NEW.data,
NEW.codigo_empresa,
NEW.codigo_loja,NEW.nsu,
NEW.dtef_origem,
NEW.codigo_pdv,
NEW.codigo_rede,
NEW.status,
NEW.status_offline,
NEW.codigo_transacao,
NEW.nsu_rede,
NEW.cupom,
NEW.codigo_resposta,
NEW.data_hora,
NEW.valor,
NEW.numero_cartao,
NEW.dados,
NEW.descricao,
NEW.emissor,
NEW.detalhe1,
NEW.detalhe2,
NEW.log_consolidado,
NEW.app_origem
);
EXCEPTION
WHEN UNDEFINED_TABLE THEN
CREATE TABLE S_TABELA (CHECK ( EXTRACT(MONTH FROM data) =
EXTRACT(MONTH FROM NEW.data) and EXTRACT(year FROM data) = EXTRACT(MONTH
FROM NEW.data) )) INHERITS (log);
CREATE INDEX S_INDICE ON S_TABELA (data);
PERFORM log_historico();
END;
END IF;
IF TG_OP = 'UPDATE' THEN
UPDATE S_TABELA
SET codigo_pdv = NEW.codigo_pdv,
codigo_rede = NEW.codigo_rede,
status = NEW.status,
status_offline = NEW.status_offline,
codigo_transacao = NEW.codigo_transacao,
nsu_rede = NEW.nsu_rede,
cupom = NEW.cupom,
codigo_resposta = NEW.codigo_resposta,
data_hora = NEW.data_hora,
valor = NEW.valor,
numero_cartao = NEW.numero_cartao,
dados = NEW.dados,
descricao = NEW.descricao,
emissor = NEW.emissor,
detalhe1 = NEW.detalhe1,
detalhe2 = NEW.detalhe2,
log_consolidado = NEW.log_consolidado,
app_origem = NEW.app_origem
WHERE data = NEW.data AND
codigo_empresa = NEW.codigo_empresa AND
codigo_loja = NEW.codigo_loja AND
nsu = NEW.nsu AND
dtef_origem = NEW.dtef_origem;
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral