Integração entre trigger e stored procedure
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.
- 506 leituras




