Firebird, fazendo valer o lado do servidor

O Firebird traz dezenas de recursos que podem deixar as aplicações cliente-servidor muito mais rápidas, de forma que a maior parte do processamento se concentre realmente no lado do servidor, melhorando o tráfego de dados na rede e não exigindo muito da plataforma onde está o cliente.

[ Hits: 25.633 ]

Por: Evaldo Avelar Marques em 20/07/2009 | Blog: http://evaldoavelar.blogspot.com/


Triggers



Suponha que você precisa manter um histórico do funcionário cada vez que ele tiver um aumento, na sua aplicação, como ficaria?

Você enviaria duas Querys, uma atualizando o salário e outra o histórico:

UPDATE FUNCIONARIOS SET SALARIO= SALARIO +( (:PERCENT*100) / SALARIO ) WHERE ID = :ID ;
INSERT INTO HISTORICO (DATA,ID_FUNCIONARIO, SALARIO_ANTERIOR,NOVO_SALARIO) VALUES ( :DATA, :ID_FUNCIONARIO,:SALARIO_ANTERIOR,:NOVO_SALARIO);

Trabalhoso, né?

A Trigger pode muito bem fazer isso por nós, vamos criar uma:

CREATE TRIGGER FUNCIONARIOS_BU0 FOR FUNCIONARIOS
ACTIVE BEFORE UPDATE POSITION 0
AS
BEGIN
  IF (OLD.SALARIO <> NEW.SALARIO) THEN  -- checa se houve alterações no salario
  BEGIN
    INSERT INTO HISTORICO  (DATA,ID_FUNCIONARIO, SALARIO_ANTERIOR,NOVO_SALARIO) VALUES ( CURRENT_DATE, NEW.ID,OLD.SALARIO,NEW.SALARIO); --atualiza o histórico
  END
END

Repare no "ACTIVE BEFORE UPDATE", ela será disparada antes de uma atualização da tabela FUNCIONARIOS. Ou seja, toda vez que executarmos a nossa Stored Procedure ela será acionada:

EXECUTE PROCEDURE DAR_AUMENTO(1,10) ;

Ao executar isso você já dá o aumento como também atualiza o histórico do funcionário e, o que é melhor, sem gerar tráfego pela rede!

João ganhou 10% de aumento e já atualizamos seu histórico na tabela Histórico:

ID_FUNCIONARIO   DATA        SALARIO_ANTERIOR   NOVO_SALARIO
1                16/7/2009   20                 70

Página anterior     Próxima página

Páginas do artigo
   1. Recursos
   2. Stored Procedures
   3. Triggers
   4. Views
Outros artigos deste autor

Software envelhece?

Quando é que eu vou usar isso na minha vida?

É possível usar o Lazarus em alternativa ao Delphi para desenvolver aplicações comerciais?

Leitura recomendada

Como instalar o Interbase 6

Apresentando o FenixSQL - Ferramenta de Banco de Dados para Interbase / Firebird

Criando uma aplicação em shell script integrada com o Interbase/Firebird

Interbase no Debian

Criando um banco de dados no Flamerobin (Firebird)

  
Comentários
[1] Comentário enviado por cruzeirense em 20/07/2009 - 10:45h

Evaldo,

Parabéns pelo artigo.
Eu utilizo o Interbase com delphi 7 há alguns anos e sempre me atendeu bem.
A única deficiência que encontrei no banco é que ele utiliza um modo de transferência de dados que o torna muito lento ao rodar pela internet (Ex. Utilizando entre filial X Matriz).
Agora, os recursos citados acima são excelentes, mas devem ser sempre utilizados com cautela.
Quanto mais você se apegar aos recursos de uma ferramenta, mais dependente dela você fica.
Vamos supor que você crie uma aplicação toda baseada em procedimentos armazenados e gatilhos, se você futuramente precisar mudar de banco de dados aí fica muito complicado, pois cada banco de dados utiliza uma linguagem diferente (apenas em procedimentos armazenados e gatilhos, os comandos SQL comuns são padronizados!).

Abraços,

Renato

[2] Comentário enviado por evaldoavelar em 20/07/2009 - 11:26h

È isso mesmo Renato, o uso dos recursos torna maior a dependência com o banco de dados e deve ser bem planejado, mas como você citou ai, em aplicações rodando pela internet, esses recursos podem ajudar muito no tempo de resposta, deixando as aplicações mais agíeis.


[3] Comentário enviado por wryel em 23/07/2009 - 12:11h

Ótima base para banco de dados, algmas dúvidas que eu havia que iam alem de dmls, foram sanadas aqui, tranks for share :D

[4] Comentário enviado por albertoaalmeida em 01/07/2010 - 20:16h

Bom o artigo, visto que, a agilidade na internet é sempre muito importante. Porém fico com o Renato quanto mais recursos utilizamos de uma ferramenta, mais dependente ficamos da mesma.

Abraços..

Alberto Almeida
http://www.albertoalmeida.blogspot.com


Contribuir com comentário