<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Fabrizio Ferrari </title>
    <description>The latest articles on DEV Community by Fabrizio Ferrari  (@fabferrari1).</description>
    <link>https://dev.to/fabferrari1</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1220348%2F828ec2ab-37a8-4d22-807d-26e6ce2556db.png</url>
      <title>DEV Community: Fabrizio Ferrari </title>
      <link>https://dev.to/fabferrari1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fabferrari1"/>
    <language>en</language>
    <item>
      <title>Exemplos práticos do uso de Triggers em BD</title>
      <dc:creator>Fabrizio Ferrari </dc:creator>
      <pubDate>Fri, 08 Dec 2023 02:51:53 +0000</pubDate>
      <link>https://dev.to/fabferrari1/exemplos-praticos-do-uso-de-triggers-em-bd-44b1</link>
      <guid>https://dev.to/fabferrari1/exemplos-praticos-do-uso-de-triggers-em-bd-44b1</guid>
      <description>&lt;p&gt;Fabrizio Ferrari - 166685&lt;br&gt;
Luís Felipe - 165601&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Estaremos criando um trigger para registrar cada inserção, atualização ou exclusão em uma tabela de clientes:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--i-VF17br--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k8rm4w5qec9f2u1tmfns.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i-VF17br--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k8rm4w5qec9f2u1tmfns.png" alt="Image description" width="800" height="300"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Assegurar que o email inserido em uma nova entrada na tabela de usuários seja válido.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5iM1j0if--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ejzd3r5p1p4mo5y9x09c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5iM1j0if--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ejzd3r5p1p4mo5y9x09c.png" alt="Image description" width="800" height="216"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Atualizar automaticamente o status do pedido na tabela 'pedidos' quando o pagamento é registrado na tabela 'pagamentos'.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JCtIDYd_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w90snqz1o3j6z4ie5ds4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JCtIDYd_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w90snqz1o3j6z4ie5ds4.png" alt="Image description" width="800" height="216"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enviar uma notificação por e-mail quando um novo usuário é adicionado à tabela de usuários.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2jwgfdoJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x3y0y7fd0tou5gsexliq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2jwgfdoJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x3y0y7fd0tou5gsexliq.png" alt="Image description" width="800" height="175"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Criar um backup de uma linha antes de ela ser atualizada ou excluída.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--W5hYgAcl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yyxg6luo8icd7e661331.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--W5hYgAcl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yyxg6luo8icd7e661331.png" alt="Image description" width="656" height="236"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Casos de Uso:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gerenciamento de Estoque em uma Loja Online:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Situação: Uma loja online precisa manter seu estoque sempre atualizado. Sempre que um item é vendido, o estoque precisa ser automaticamente ajustado para refletir a quantidade disponível.&lt;br&gt;
Solução com Trigger: será configurado para reduzir a quantidade em estoque na tabela de produtos sempre que uma venda é registrada na tabela de pedidos. assegurando que a informação de estoque seja sempre precisa e atualizada em tempo real, evitando a venda de produtos esgotados.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Controle de Acesso em um Sistema Bancário:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Situação: Um banco deseja monitorar e registrar todas as tentativas de acesso ao sistema, incluindo tentativas de login bem-sucedidas e fracassadas, para fins de segurança e auditoria.&lt;br&gt;
Solução com Trigger: Um trigger será implementado para inserir um registro em uma tabela de log cada vez que um usuário tenta fazer login no sistema. Isso permite que a equipe de segurança rastreie e analise as tentativas de acesso, identificando padrões suspeitos ou tentativas de invasão.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Automatização de Notificações em uma Plataforma de E-Learning:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Situação: Uma plataforma de e-learning quer notificar os alunos por e-mail sempre que um novo conteúdo ou material de curso é adicionado.&lt;br&gt;
Solução com Trigger: Um trigger é criado para enviar automaticamente e-mails para os alunos inscritos em um curso específico sempre que novos materiais são adicionados à plataforma. Isso melhora a comunicação e garante que os alunos estejam sempre cientes dos novos recursos disponíveis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manutenção de Integridade de Dados em um Sistema de Saúde:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Situação: Um hospital precisa garantir que as informações dos pacientes sejam mantidas consistentes e precisas em todos os seus sistemas.&lt;br&gt;
Solução com Trigger: Serão usados para validar e formatar dados de pacientes antes de serem inseridos ou atualizados na base de dados. Por exemplo, um trigger pode verificar se o número do seguro social é válido ou se as datas de nascimento estão em um formato correto, evitando erros e inconsistências.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relatórios Financeiros em Tempo Real para uma Empresa:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Situação: Uma empresa precisa gerar relatórios financeiros atualizados em tempo real para tomar decisões rápidas e informadas.&lt;br&gt;
Solução com Trigger: Os triggers serão configurados para atualizar automaticamente os relatórios financeiros sempre que transações relevantes são registradas. Isso assegura que a equipe de gestão tenha acesso a informações financeiras precisas e atualizadas a qualquer momento, facilitando uma tomada de decisão mais eficaz.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusão:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ao longo desse breve tutorial, vemos mais exemplos práticos, e podemos perceber o quão importante e crucial o uso de um Trigger pode ser. Em suma, esses Triggers se bem utilizados, vão facilitar muito aplicação de forma segura.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Uso de Triggers em Banco de Dados</title>
      <dc:creator>Fabrizio Ferrari </dc:creator>
      <pubDate>Tue, 28 Nov 2023 02:25:17 +0000</pubDate>
      <link>https://dev.to/fabferrari1/uso-de-triggers-em-banco-de-dados-3h96</link>
      <guid>https://dev.to/fabferrari1/uso-de-triggers-em-banco-de-dados-3h96</guid>
      <description>&lt;p&gt;&lt;strong&gt;Fabrizio Ferrari – 166685&lt;br&gt;
Luís Felipe – 165601&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Definição&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Dentro do conceito de banco de dados, os denominados “Triggers” os processos que são disparados em uma tradução literal, executando linhas de código, podendo conter atualizações, inserções e exclusão de dados de uma tabela, por exemplo. Dessa forma ele permite que automaticamente ele execute ações premeditadas quando os requerimentos para um trigger acontecer, seja preenchido.&lt;br&gt;
Quando eventos específicos ocorrem em uma tabela que ele esteja associado, ele irá conclusivamente executar suas ações, podendo garantir de grande forma a consistência e integridade de dados, poupando diversos processos de inserção manual de ordens para manipulação de tabelas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sintaxe&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Para criar um Trigger existem diversas variações, mas sempre com um padrão parecido. Geralmente definimos um evento de DML no disparo&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RqN9mfco--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x51k8huy6vjnn884hbjl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RqN9mfco--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x51k8huy6vjnn884hbjl.png" alt="Image description" width="800" height="199"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Analisando mais a fundo esse exemplo nosso de Trigger, ele está impedindo que o saldo da conta bancária seja mudado para negativo. Também é bom ter cautela ao usar Triggers, pois ao mesmo tempo que eles podem ser muito bons no controle e facilitadores, eles podem afetar o desempenho de um banco de dados se mal utilizado. É com esse gancho que entramos na parte de vantagens e desvantagens.&lt;br&gt;
Vantagens e Desvantagens do Uso&lt;/p&gt;

&lt;p&gt;Vantagens:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Automatização de regras negociais&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Facilitador na manutenção de dados em um DB&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Reduz a necessidade de outras linhas de código em uma aplicação.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Desvantagens:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Ao realizar um diagnóstico ou manutenção de um código, ele automaticamente se torna mais complexo.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pode reduzir drasticamente a performance se mal utilizado.&lt;br&gt;
Difícil de fazer uma depuração&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Desde que bem pensado e bem arquitetado, o uso de triggers sem dúvidas é um ótimo facilitador, trazendo sem dúvidas mais vantagens do que desvantagens.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Exemplos de aplicações no mercado&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Em geral o uso de Triggers é bem abrangente, mas seguindo o exemplo de sintaxe anterior, um bom exemplo é em sistemas bancários, validando e evitando fraudes, já que ele está mantendo valores, ou até mesmo se uma transação for feita de um lugar ou horário incomum, bloqueá-la. Um outro bom exemplo pode ser uma loja on-line, manipulando o estoque da loja, sem que precise de alguém o tempo inteiro intervindo no processo, caso um produto se esgote em breve.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusão&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Triggers quando estudados, arquitetados e bem aplicados em um banco de dados, sem dúvidas auxiliará no processo, pois poupará muito a inserção manual de códigos, se provando extremamente úteis em diversas ocasiões.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
