Não Executa Mais Trigger
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?
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
Curtidas 0
Respostas
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!
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
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.
E aí pessoal, mais alguém... tô realmente com urgência , pois, sem motivo aparente, o banco parou de funcionar.
GOSTEI 0
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
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...
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
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
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
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.
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
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!
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