Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.13 KB | None | 0 0
  1.  
  2. -- Mutating table problem, cause i am trying to change a table that triggered
  3. CREATE OR REPLACE TRIGGER saldo_financeiro
  4. AFTER UPDATE OF valorPat
  5. ON patrocinio
  6. REFERENCING OLD AS antigo NEW AS novo
  7. FOR EACH ROW
  8. BEGIN
  9. UPDATE patrocinio SET saldoPat = saldoPat + ( :novo.valorPat - :antigo.valorPat ) WHERE numEd = :novo.numEd AND codEv = :novo.codEv;
  10. UPDATE edicao SET saldoFinanceiroEd = saldoFinanceiroEd + ( :novo.valorPat - :antigo.valorPat ) WHERE numEd = :novo.numEd AND codEv = :novo.codEv;
  11. END;
  12.  
  13. -- solution, using compound triggers
  14. CREATE OR REPLACE TRIGGER saldo_financeiro
  15. FOR UPDATE OF valorPat
  16. ON patrocinio
  17. COMPOUND TRIGGER
  18. BEFORE STATEMENT IS
  19. BEGIN
  20. UPDATE patrocinio SET saldoPat = saldoPat + ( :new.valorPat - :old.valorPat ) WHERE cnpjPat = :new.cnpjPat AND numEd = :new.numEd AND codEv = :new.codEv;
  21. END BEFORE STATEMENT;
  22. AFTER EACH ROW IS
  23. BEGIN
  24. UPDATE edicao SET saldoFinanceiroEd = saldoFinanceiroEd + ( :new.valorPat - :old.valorPat ) WHERE numEd = :new.numEd AND codEv = :new.codEv;
  25. END AFTER EACH ROW;
  26. END saldo_financeiro;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement