Advertisement
Guest User

Untitled

a guest
Apr 18th, 2019
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. SET serveroutput ON;
  2.  
  3. --1 Creati un trigger care sa SE DECLANSEZE INAINTE DE UPDATE PE COL SALARIUL DIN TAB ANGAJATI
  4.  
  5. CREATE OR REPLACE TRIGGER TEST
  6. BEFORE UPDATE OF SALARIUL ON ANGAJATI
  7. FOR EACH ROW
  8. BEGIN
  9. DBMS_OUTPUT.PUT_LINE('OK');
  10. END;
  11. /
  12. UPDATE ANGAJATI SET SALARIUL=SALARIUL-10 WHERE ID_DEPARTAMENT=10;
  13.  
  14. --2
  15. CREATE OR REPLACE TRIGGER TEST
  16. BEFORE UPDATE OF SALARIUL ON ANGAJATI
  17. FOR EACH ROW
  18. BEGIN
  19. DBMS_OUTPUT.PUT_LINE(:OLD.SALARIUL||' '||:NEW.SALARIUL);
  20. END;
  21. /
  22.  
  23. --3 TRIGGER PT ANGAJATI(SALARIU) IN COMPARATIE CU FUNCTII(SAL MIN SI MAX)
  24. --SA SE CONSTR UN TRIGGER CARE SA SE DECLANSEZE LA COMENZILE INSERT/UPDATE PE TABELA ANGAJATI SI VA VERIFICA DACA SAL ANGAJATULUI SE INCADREAZA INTRE LIMITELE DE SALARIU AFEREBTE FCT PE CARE O DETINE. IN CAZUL IN CARE SALARIUL NU E INTRE LIMITE,SE VA INVOCA O EXCEPTIE
  25. CREATE OR REPLACE TRIGGER TEST1
  26. BEFORE UPDATE OF SALARIUL OR INSERT ON ANGAJATI
  27. FOR EACH ROW
  28. DECLARE
  29. SAL_MIN FUNCTII.SALARIU_MIN%TYPE;
  30. SAL_MAX FUNCTII.SALARIU_MAX%TYPE;
  31. EX EXCEPTION;
  32. BEGIN
  33. SELECT SALARIU_MIN,SALARIU_MAX INTO SAL_MIN,SAL_MAX FROM FUNCTII WHERE ID_FUNCTIE=:NEW.ID_FUNCTIE;
  34. IF(:NEW.SALARIUL>SAL_MAX OR :NEW.SALARIUL<SAL_MIN)
  35. THEN RAISE_APPLICATION_ERROR(-20001,'SAL NU SE INCADREAZA IN LIMITE');
  36. END IF;
  37. END;
  38. /
  39.  
  40.  
  41. --4 SA SE CONSTR UN TRIGGER CARE SA SE DECLANSEZE IN MOM IN CARE SE INCEARCA MARIREA SALARIULUI UNUI ANGAJAT CU VECHIMNE MAI MARE DE 20 DE ANI
  42. CREATE OR REPLACE TRIGGER TEST2
  43. BEFORE UPDATE OF SALARIUL ON ANGAJATI
  44. FOR EACH ROW
  45. WHEN(NEW.SALARIUL>OLD.SALARIUL)
  46. DECLARE
  47. EX EXCEPTION;
  48. VECHIME NUMBER;
  49. BEGIN
  50. VECHIME:=ROUND((SYSDATE-:OLD.DATA_ANGAJARE)/365);
  51. IF(VECHIME >20) THEN RAISE_APPLICATION_ERROR(-20002,'VECHIME MAI MARE DE 20');
  52. END IF;
  53. END;
  54. /
  55. UPDATE ANGAJATI SET SALARIUL=SALARIUL+30 WHERE ID_DEPARTAMENT=70;
  56. UPDATE ANGAJATI SET SALARIUL=SALARIUL-5 WHERE ID_DEPARTAMENT=90;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement