Não Executa Mais Trigger

Firebird

17/01/2005

Pessoal, uso o Firebird 1.5 e Delphi 7 Enterprise com IBX.
Criei a seguinte trigger:

SET TERM ^ ;

CREATE TRIGGER SERVICOS_BD0 FOR SERVICOS
ACTIVE BEFORE DELETE POSITION 0
AS
begin
delete from servicos_items where servico = old.id;
end
^

SET TERM ; ^


Porém, ela não está excluindo os registros da outra tabela. O que estou fazendo de errado?

Outra coisa, algumas triggers, também estão ativas, e não estão executando.

E, o registro está sendo excluido somente se eu usar um navigator, mas quando uso o comando

IBDataset.Delete;

Não está escluindo, alguém poderia me ajudar?


Thomaz_prg

Thomaz_prg

Curtidas 0

Respostas

Fsflorencio

Fsflorencio

17/01/2005

Amigo, não sei como vc está fazendo, mas já tive problemas com IBX. Quando o componente IBDatabase ficava no mesmo datamodule das IbQuery´s tudo funcionava bem, mas quando o ibdatabase ficava em outro datamodule, era só fechar o sistema que ele dava um Rollback por conta própria (mesmo eu commitando todas as transações) e perdia todas as informações.

Julgo que seja um [b:89947a0771]problema com os componentes IBX[/b:89947a0771], pois quando vc vai pelo dbnavigator (que deve ser de algum outro software) ele funciona normal.

Faça um teste tendo em vista esta opinião, caso seja este o problema, então tente atualizar a versão do seu IBX pra ver se resolve e se não funcionar, tente usar outra coisa como IBEXPRESS ou IBO, mas se for dar muito trabalho, então coloque o IBDATABASE junto com todos os componentes de acesso que vai funcionar. Pena que se tiver muita coisa no datamodule os componentes podem não caber no espaço embolando tudo!


GOSTEI 0
Thomaz_prg

Thomaz_prg

17/01/2005

Colega, quanto a mudança para DBExpress ou outra tecnologia, acho que pra mim ficaria complicado, pois o projeto está pronto e todo estruturado para IBX. A mudança necessitaria de muito tempo, portanto pra mim não seria viável. Quanto a questão do datamodule, o ibdatabase, o transaction, os datasets e o datasource estão no mesmo datamodule.

E aí pessoal, mais alguém... tô realmente com urgência , pois, sem motivo aparente, o banco parou de funcionar.


GOSTEI 0
Gandalf.nho

Gandalf.nho

17/01/2005

Como o colega sugeriu acima, o seu IBX está atualizado? Se não, pegue a última versão em [url]http://codecentral.borland.com/codecentral/ccweb.exe/author?authorid=102[/url] e veja se ajuda.


GOSTEI 0
Thomaz_prg

Thomaz_prg

17/01/2005

Olá...
Obrigado pela atenção e pela ajuda...
Mas creio não ser este meu problema pois, se uso um dbnavigator, e clico em excluir, ele exclui, porém se faço assim:

ibdataset.delete;
ibTransaction.CommitRetaining;

Ele não exclui. E mesmo quando excluo com o dbnavigator, a trigger não está sendo disparada. Mas, vou fazer a atualização e ver o q acontece.

Valew...


GOSTEI 0
Thomaz_prg

Thomaz_prg

17/01/2005

Alguém poderia me ajudar??? Já tô ficando com os cabelos brancos, e não acho solução pro meu problema!


GOSTEI 0
Gandalf.nho

Gandalf.nho

17/01/2005

A tabela servicos_itens é filha da tabela servicos (onde está a trigger)? Se sim, não é mais fácil usar um relacionamento do tipo DELETE CASCADE para apagar os registros relacionados na tabela filha?


GOSTEI 0
Rocsadan

Rocsadan

17/01/2005

thomaz_prg blz?

Já tive problemas assim:

Verifique as opções:

Clique duplo no IBTransaction
E marque a opção.

ead_committed

é

autostopaction= saRollbackRetaining
defaultaction= TACommitRetaining

Ainda verifique se a sua trigger esta realmente ativa, pode ser isso e foi meu caso.


GOSTEI 0
Thomaz_prg

Thomaz_prg

17/01/2005

Valeu pessoal pela ajuda de todos....

Consegui resolver meu problema, fazendo um BKP, excluindo todas as triggers e restaurando o bkp.... funcionou após ter feito isso 3 vezes....
Mas agora tá tudo ok...


Muito Obrigado a todos!


GOSTEI 0
POSTAR