ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

O mais recomendado seria uma trigger ou computedby?

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
MacacoLoco
Novato
Novato


Registrado: Terça-Feira, 7 de Julho de 2015
Mensagens: 55

MensagemEnviada: Sáb Jun 09, 2018 5:05 pm    Assunto: O mais recomendado seria uma trigger ou computedby? Responder com Citação

Pessoal, hoje me bateu uma dúvida. Até então uso no bd Firebrid, para validar uma informação, faço na TAB_MASTER um check, que é lançado sobre um campo VALOR, o qual é um ComputedBy, que pega este VALOR na TAB_DETALHE, checando por exemplo se VALOR > 0. Funciona bem.

Considerando uma trigger ou um campo computedby, combinado com chec, com a mesma sql.

Porém uma dúvida, posso fazer isto usando apenas uma trigger, que aparentemente faz a mesma coisa com mais eficiente e segurança, só irá ser acionada quando for gravar ou atualizar, e me parece mais leve.

Vi em algum local que usar campos ComputedBy demais pode acarretar em perda de desempenho, principalmente num tabela que terão muitos cadastros.

A dúvida é se é eficiente usar apenas a trigger ou ela pode falhar neste checagem? (se desabilitada, se o bd possui erros, em travamentos graves no so).

Estou reunindo argumentos para me ajudar a decidir pelo que for melhor.



o que vi até agora foi:


Se for muitos inserts por segundo, triggers podem causar lentidão. Eu pensava o contrário.

Permanece a dúvida apenas se, ao usar (mesma sql) em campos ComputedBy, irá causar lentidão em inserts ou selects, considerando uns raros picos de 1 inserção a cada 5 segundos, e no normal, cerca de 3 inserts por minutos, mas em raras vezes precisarei de selects em toda a tabela, com aproximadamente uns 10 mil registros, nesta base. Acho que neste caso tanto faz.

O que A Firebird diz: perde performance
http://www.firebirdfaq.org/faq289/

Resta saber até quando, se em meu cenário vale a pena.

EDIT:
Neste caso do link acima no firebirdfaq, só me é possível usar um campo computedby com um check na TB_MASTER, ou, é possível eu usar, dentro do firebird uma SP? não consigo imaginar encaixando uma sp, só um computed by com o sql...ou a forma seria usar a sp dentro de uma trigger no INSERT da TB_MASTER? e caio na mesma dúvida inicial (uma trigger com uma sql simples).
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB