Advertisement
Guest User

pl/sql TP9

a guest
Apr 8th, 2020
403
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 3.26 KB | None | 0 0
  1. CREATE TRIGGER jobsnt
  2. BEFORE INSERT OR UPDATE OR DELETE
  3. ON jobs
  4. BEGIN
  5.     IF INSERTING THEN
  6.         raise_application_error(-20004,'Insertion interdite.');
  7.     ELSE IF UPDATING THEN
  8.             raise_application_error(-20005, 'Mise à jour interdite.');
  9.         ELSE
  10.             raise_application_error(-20006, 'Suppression interdite');
  11.         END IF;
  12.     END IF;
  13. END;    
  14.  
  15. UPDATE jobs
  16.     SET job_id='DMP_AH';
  17.    
  18.  
  19.  
  20.  
  21.  
  22. CREATE TABLE audit_emp_table (user_name VARCHAR2(50)NOT NULL, date_op DATE, nature_op VARCHAR2(20));
  23.  
  24. CREATE TRIGGER empreee
  25. AFTER INSERT OR UPDATE OR DELETE
  26. ON employees
  27. DECLARE
  28.     nature_op VARCHAR2(20);
  29. BEGIN
  30.     IF INSERTING THEN
  31.         nature_op := 'Insertion';
  32.     ELSIF UPDATING THEN
  33.             nature_op := 'Mise à jour';
  34.         ELSE
  35.             nature_op := 'Suppression';
  36.         END IF;
  37.     END IF;
  38.     INSERT INTO audit_emp_table
  39.         VALUES(USER, SYSDATE, nature_op);
  40. END;
  41.  
  42.  
  43.  
  44. INSERT INTO employees
  45.     VALUES(208, 'Yahya', 'KHALID', 'reee@ee.cc',
  46.         '000.366.1119', SYSDATE, 'DMP_AF', 149000, 0.4, 203, 10);
  47.        
  48. UPDATE employees
  49.     SET salary = salary * 1.2
  50.     WHERE employee_id=208;
  51.    
  52. DELETE FROM employees
  53.     WHERE employee_id=208;
  54.  
  55.  
  56.  
  57. CREATE TRIGGER salreee
  58. BEFORE INSERT OR UPDATE OF salary
  59. ON employees
  60. FOR EACH ROW
  61. DECLARE
  62.     min_sal NUMBER;
  63.     max_sal NUMBER;
  64. BEGIN
  65.     SELECT min_salary, max_salary
  66.     INTO min_sal, max_sal
  67.     FROM jobs
  68.     WHERE job_id = :NEW.job_id;
  69.    
  70.     IF :NEW.salary < min_sal OR :NEW.salary > max_sal THEN
  71.         IF updating THEN
  72.             raise_application_error(-20000, 'erreur mise à jour');
  73.         ELSE
  74.             raise_application_error(-20001, 'erreur ajout');
  75.         END IF;
  76.     END IF;
  77. END;
  78.  
  79. INSERT INTO employees
  80.     VALUES(208, 'Yahya', 'KHALID', 'reee@ee.cc',
  81.         '000.366.1119', SYSDATE, 'AD_ASST', 149000, 0.4, 203, 10);
  82.        
  83. UPDATE employees
  84.     SET salary = 3900
  85.     WHERE employee_id=103;
  86.  
  87.  
  88.  
  89. CREATE TRIGGER salcheck
  90. BEFORE INSERT OR UPDATE OF salary
  91. ON employees
  92. FOR EACH ROW
  93. DECLARE
  94.     sal employees.salary%TYPE;
  95. BEGIN
  96.     sal := :OLD.salary * 1.1;
  97.     IF :NEW.salary > sal OR :NEW.salary < sal THEN
  98.         raise_application_error(-20003, 'Erreur - salaire entré est invalide!');
  99.     END IF;
  100. END;
  101.    
  102.    
  103. UPDATE employees
  104.     SET salary = salary * 1.2
  105.     WHERE employee_id = 103;
  106.  
  107.  
  108.  
  109. CREATE TABLE dept AS SELECT * FROM departments;
  110. CREATE OR REPLACE TRIGGER maintainDept
  111. AFTER INSERT OR UPDATE OR DELETE
  112. ON departments
  113. FOR EACH ROW
  114. BEGIN
  115.     IF inserting THEN
  116.         INSERT INTO dept
  117.             VALUES(:NEW.department_id, :NEW.department_name, :NEW.manager_id, :NEW.location_id);
  118.     ELSIF updating THEN
  119.         UPDATE dept
  120.             SET department_name = :NEW.department_name,
  121.                 manager_id = :NEW.manager_id,
  122.                 location_id = :NEW.location_id
  123.             WHERE dept.department_id = :NEW.department_id;
  124.     ELSE
  125.         DELETE FROM dept
  126.             WHERE dept.department_id = :OLD.department_id;
  127.     END IF;
  128. END;
  129.  
  130. INSERT INTO departments
  131.         VALUES(5, 'Helping', '103', 1500);
  132.        
  133. UPDATE departments
  134.     SET department_name = 'Helping''nt'
  135.     WHERE department_id = 5;
  136.    
  137. DELETE FROM departments
  138.     WHERE department_id = 5;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement