Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fedex

DELETE: 0 row affected

Recommended Posts

Bom dia,

 

A algum tempo mudei a base de dados da empresa que trabalho de mysql para postgresql.

Mesmo sendo um pouco mais lento, a quantidade de recursos existente no postgresql fizeram a mudanca ser um sucesso.

E como toda mudanca tem sempre uns pequenos problemas.

 

Eu tenho a seguinte tabela.

 

CREATE TABLE conversao_pontuacao(   id_empresa INT NOT NULL REFERENCES empresa (id),   id_moeda_de_conversao INT NOT NULL REFERENCES moeda_de_conversao (id),   id_autenticacao INT NOT NULL  REFERENCES funcionario (id_autenticacao),   quantidade_moeda NUMERIC(10,2) NOT NULL,   ponto NUMERIC(10,2) NOT NULL  ); ALTER TABLE conversao_pontuacao ADD CONSTRAINT conversao_pontuacao_PK PRIMARY KEY (id_empresa, id_moeda_de_conversao);

Fiz o INSERT e funcionou perfeito.

 

INSERT INTO conversao_pontuacao VALUES ('2', '1', '8', '1.50', '1.01');

O UPDATE e o SELECT também funcionam perfeitamente.

 

Porem o DELETE esta sendo o problema.

 

DELETE FROM conversao_pontuacao WHERE id_empresa=2;

 

Ele retorna a mensagem

 

Query returned successfully: 0 rows affected, 31 ms execution time.

Ou seja, foi um sucesso porem 0 registros foram afetados. Existe uma TRIGGER nesta tabela para o evento de DELETE ( Fará o insert deste registro numa outra tabela).

 

 

Quando eu utilizo o "EXPLAIN ANALYSE DELETE FROM conversao_pontuacao WHERE id_empresa=2;" Mostra a seguinte mensagem.

 

"Bitmap Heap Scan on conversao_pontuacao (cost=2.02..11.15 rows=6 width=6) (actual time=0.029..0.031 rows=1 loops=1)""  Recheck Cond: (id_empresa = 2)""  ->  Bitmap Index Scan on conversao_pontuacao_pk  (cost=0.00..2.02 rows=6 width=0) (actual time=0.022..0.022 rows=1 loops=1)""		Index Cond: (id_empresa = 2)""Trigger trg_conversao_pontuacao_d: time=0.200 calls=1""Total runtime: 0.322 ms"

 

 

Alguem tem alguma sugestao?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa trigger que ele esta gerando uma chamada:

"Trigger trg_conversao_pontuacao_d: time=0.200 calls=1"

 

Oq tem programado nela?

Compartilhar este post


Link para o post
Compartilhar em outros sites

CREATE OR REPLACE FUNCTION FCT_CONVERSAO_PONTUACAO_D() RETURNS TRIGGER AS '	BEGIN		INSERT INTO a_conversao_pontuacao VALUES (OLD.id_empresa, OLD.id_moeda_de_conversao, OLD.funcionario_id_autenticacao, OLD.quantidade_moeda, OLD.ponto, NOW(), substr(TG_OP,1,1));		RETURN NULL;	END;' LANGUAGE 'plpgsql';CREATE TRIGGER TRG_CONVERSAO_PONTUACAO_D BEFORE DELETE ON CONVERSAO_PONTUACAO FOR EACH ROW	EXECUTE PROCEDURE FCT_CONVERSAO_PONTUACAO_D();

Quando alguem apagar um registro da tabela conversao_pontuacao, ele ira criar um registro na tabela a_conversao_pontuacao como forma de armazenar o historico.

 

Esta tabela ( conversao_pontuacao) ainda tem as TRIGGER de INSERT e UPDATE, q funcionam.

 

Outro detalhe, esta TRIGGER de DELETE (da tabela conversao_pontuacao) ta funcionando, o registro ta sendo gravado na tabela a_conversao_ponto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.