Fórum Trigger after delete #498523

20/10/2014

0

Boa noite pessoal. Eu gostaria de saber se é possível eu criar uma trigger no meu banco que ela execute a seguinte rotina:

Ao tentar excluir um determinado registro, a operação de "exclusão" é cancelada e eu efetuo um update em um determinado campo.

Obrigado
Marlon Minotti

Marlon Minotti

Responder

Posts

21/10/2014

Marisiana Battistella

É possível sim... mas porque vc precisa da tentativa de exclusão para depois cancelá-la?
Não é mais fácil criar uma function que faça o que você precisa e manipular a execução dela pela aplicação?
Responder

Gostei + 0

21/10/2014

Marlon Minotti

Não entendi muito bem Marisiana, você poderia me ajudar?
Responder

Gostei + 0

21/10/2014

Marlon Minotti

Melhor, você poderia me adicionar no skype ou hangouts? É claro que se não for incômodo.
Skype: marlon.minotti
Hangouts: marlon.minotti@gmail.com
Responder

Gostei + 0

21/10/2014

Jair N.

Bom Dia, "before" antes de excluir e executar o procedimento assim você poderá cancelar! não "after", veja !

É possível sim... mas porque vc precisa da tentativa de exclusão para depois cancelá-la?
Não é mais fácil criar uma function que faça o que você precisa e manipular a execução dela pela aplicação?
Responder

Gostei + 0

21/10/2014

Marlon Minotti

Hmm, legal, então eu teria que utilizar o before, e como eu faria isso Jair?
Responder

Gostei + 0

21/10/2014

Marisiana Battistella

Você pode criar uma function no PostgreSQL que faça o update que precisa e chamá-la no Delphi no momento que o usuário for excluir o registro.
Responder

Gostei + 0

21/10/2014

Jair N.

A exemplo:

CREATE TRIGGER tgr_ao_excluir BEFORE DELETE ON limiter EXECUTE PROCEDURE fnc_antes_de_exluir();


CREATE OR REPLACE FUNCTION fnc_antes_de_excluir() RETURNS trigger
LANGUAGE plpgsql AS
$BODY$
IF (TG_OP = 'DELETE') THEN
....
END IF;
RETURN OLD;
END;
$BODY$;

Lembrando de que na função terá que "cancelar" a exclusão...Já fiz tal procedimentos com a trigger gravando o "histórico de acessos (auditor)" quando o usuário excluí, altera ou insere registros. porém no caso da "exclusão" tem que ser antes que ocorra, se quiser ainda ter o registro ativo e poder fazer todo o processo.

Atc.
Responder

Gostei + 0

21/10/2014

Jair N.

Acerto ppara melhor informando ao criar sua trigger:

CREATE TRIGGER tgr_ao_excluir BEFORE DELETE ON limiter EXECUTE PROCEDURE fnc_antes_de_exluir();

CREATE TRIGGER tgr_ao_excluir
BEFORE DELETE ON tabela_atual
FOR EACH ROW EXECUTE PROCEDURE fnc_antes_de_excluir()



CREATE OR REPLACE FUNCTION fnc_antes_de_excluir() RETURNS trigger
LANGUAGE plpgsql AS
$BODY$
IF (TG_OP = 'DELETE') THEN
....
END IF;
RETURN OLD; -- OBS: com "return new" você pode cancelar um "DELETE" que está sendo executado...
END;
$BODY$;

Entedeu?
Responder

Gostei + 0

21/10/2014

Marlon Minotti

Entendi, vou aplicar este exemplo depois e aviso a você se deu certo. Obrigado Jair
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar