PL SQL

Páginas: 9 (2034 palavras) Publicado: 26 de fevereiro de 2015
Triggers

O que é uma trigger?

Uma trigger é um bloco PL/SQL que é associado a um evento específico (insert, update ou delete), armazenado em um banco de dados e executado sempre que o evento ocorrer.
Uma trigger é disparada quando uma linha na tabela correspondente é:
Inserida: no evento inserting da tabela;
Atualizada: no evendo updating da tabela;
Excluída: no evento deleting databela.
Não é possível definir uma trigger para ser disparada quando uma linha é selecionada.

Uma trigger é um objeto de banco de dados, assim como uma tabela ou um índice.
Quando você define uma trigger, ela se torna parte do banco de dados e é sempre executada quando o evento para o qual ela é definida ocorre.
Por causa disso, uma trigger permite que você execute validação crítica ou cálculosem resposta às alterações feitas no banco de dados, seja qual for a fonte.
Um exemplo de trigger:
Suponhamos que você queira ter certeza de que todos os nomes de departamentos foram armazenados usando letras maiúsculas. Talvez você esteja fazendo isso para facilitar a pesquisa naquele campo.

1 create or replace trigger TRG_DEPARTAMENTO
2 before INSERT or UPDATE on DEPARTAMENTO for eachrow
3 begin
4 -- O comando UPPER força os caracteres em minúsculo para maiúsculo
5 :new.DESCRICAO := UPPER(:new.DESCRICAO);
6 end;
7 /

A linha 1 diz ao Oracle para criar essa trigger com o nome TRG_DEPARTAMENTO para substituir, se preciso, toda trigger existente de mesmo nome.
A linha 2 diz que ela será sempre disparada antes que uma linha nova for inseridana tabela de departamentos ou sempre que um registro de departamento mudar.
Existe a possibilidade que seja sempre disparada depois, basta substituir a palavra BEFORE por AFTER.
A referência a : NEW é o alias padrão para o novo valor do registro.
O alias :OLD pode ser usado para se referir ao valor antigo de um campo antes que aconteça uma atualização.
A linha 2 ainda, diz ao Oracle paradisparar essa trigger uma vez para cada linha modificada.
Se você precisasse executar uma declaração UPDATE para alterar os nomes de todos os departamentos da tabela, essa trigger seria disparada para cada um daqueles registros.
Dentro do corpo da trigger é possível incluir chamadas de procedures, functions, views, entre outros.
Outro exemplo de trigger:
No exemplo anterior, queríamos deixartodas as letras em maiúsculo, não importando o momento da chamada.
Suponhamos agora que, além de deixar o nome do departamento em maiúsculo, quiséssemos gerar um log das operações.

create or replace trigger TRG_DEPARTAMENTO
before INSERT OR UPDATE OR DELETE on DEPARTAMENTO for each row
begin
--
-- O comando UPPER força os caracteres em minúsculo para maiúsculo
:new.DESCRICAO :=UPPER(:new.DESCRICAO);
--
-- Faremos aqui uma validação do momento da chamada da trigger
if (INSERTING) then
--
PRC_GERA_LOG(:new.COD_DEPTO);
--
elsif (UPDATING) then
--
PRC_GERA_LOG(:old.COD_DEPTO);
--
else
--
PRC_GERA_LOG(:old.COD_DEPTO);
--
end if;
--
end;
/

Conforme dito antes, no corpo da trigger é possível realizar validações (no exemplo IF) echamadas de procedures (no exemplo PRC_GERA_LOG).
Neste exemplo pode-se notar indicadores de identação ( -- ) que auxilia no desenvolvimento e numa posterior leitura do código.



Sequences

O que é uma sequence?

Sequence é um objeto que gera números seqüenciais dentro do banco de dados. É excelente em termos de performance já que armazenam um range de números no cache e também porquetira do desenvolver a responsabilidade de gerenciar a geração dos mesmo, em casos de múltiplos acessos.
Um exemplo de sequence:
Aproveitando o exemplo da trigger acima, suponhamos que além das coisas que a trigger já está realizando, será necessário que ela insira o valor do campo COD_DEPTO para que o mesmo fique seqüencial, tirando assim a responsabilidade do usuário.
Para isto, precisamos...
Ler documento completo

Por favor, assinar para o acesso.

Estes textos também podem ser interessantes

  • pl/sql
  • PL SQL
  • Pl sql
  • Treinamento básico PL SQL
  • Exercicios pl/sql
  • Procedure e funções pl/sql
  • Bases de Dados PL SQL
  • Pl sql function

Seja um membro do Trabalhos Feitos

CADASTRE-SE AGORA!