Integração entre trigger e stored procedure

Versão para impressãoEnviar para amigoVersão PDF

A partir da versao 11.10 , quando a trigger é criado com FOR EACH ROW há possibilidade de passar automaticamente os dados da tabela executada pela trigger para a procedure e é possível identificar dentro da procedure qual tipo de trigger está sendo executada (update, delete, insert ou select).

Na declaração de criacao da Stored Procedure basta incluir o parametro REFERENCING.
Automaticamente as váriaveis UPDATING, DELETING, INSERTING e SELECTING passarão a existir.

  CREATE PROCEDURE sp_teste()
  REFERENCING OLD as o NEW as n FOR tabela_xyz;
    if (updating) then
    ...
    if (deleting) then
    ...
    if (inserting) then
    ...
    if (selecting) then
    ...
  END PROCEDURE;

Na criação da trigger basta incluir o parametro WITH TRIGGER REFERECES

  CREATE TRIGGER trg_teste INSERT ON tabela_xyz
  FOR EACH ROW (
    EXECUTE PROCEDURE sp_teste() WITH TRIGGER REFERENCES
  ) ;

Observação: Em execução de trigger select não é permitido executar update, delete e insert na mesma tabela que chamou a trigger. Comentário pessoal: Já passei por esta situação e não é gerado erro, o update é simplismente ignorado.

0
Ainda não votado
Sua avaliação: Nenhum
Tags: