3
respostas

Ouvir alterações na Tabela do BD.

É possível criar algo como um listener que ouça as mudaças em uma tabela do banco e dado uma regra de negócio dispare um email para o cliente?

3 respostas

Boa noite Carlos!

Pesquise sobre Triggers de DDL (gatilhos de DDL), assim como triggers de tabela, estes são responsáveis por "monitorar" as alterações realizadas na estrutura do banco de dados, permitindo ações programadas para quando elas ocorram.

Atenciosamente, Nicholas Góes

Bom dia Nicholas!

Então, só pra eu te explicar melhor o meu cenário. Eu tenho acesso(leitura) a um BD(SQL Server) onde tem uma tabela em que o dado de algumas colunas descrevem o status de um pedido(Analise, Separação, Controle, Faturado...etc). Esse banco é utilizado em outro sistema em produção, por isso meu acesso é apenas leitura. A idéia era monitorar essa tabela para quando houvesse alterações nessas colunas um email fosse enviado ao cliente notificando a mudança de status.

Referente a banco de dados, as Triggers já me ajudariam ou existe outro recurso mais especifico para cenários como esse?

Bom dia Carlos.

Havia compreendido errado. No seu caso você quer observar as alterações de dados de uma tabela e não a estrutura em si da mesma. As triggers de tabela suprem sua necessidade. Porém, para criação de Triggers, é necessário ter permissões específicas, e provavelmente serão criadas pelos DBAs deste banco de dados. Caso optem pela criação da trigger na tabela, há como monitorar a alteração de uma coluna específica e caso entrarem em status específicos seja enviado um e-mail para o cliente. Ressalto que no caso do envio do e-mail pelo BD será necessário a configuração do SQL Server para envio de e-mails.

No seu caso, eu recomendaria a criação de um serviço/aplicação para monitamento (de x em x minutos, por exemplo) das alterações dos pedidos e assim envio daqueles que tiveram alterações. Pois imagine que você tenha um alto volume de transações nesta tabela e para cada transação você tenha que disparar o envio de e-mails. Isso afetaria diretamente na performance do banco de dados.

Atenciosamente, Nicholas Góes