Advertisement
Guest User

Untitled

a guest
Sep 19th, 2019
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 4.16 KB | None | 0 0
  1. SELECT * FROM dolgozo;
  2.  
  3. /* 1/1 */
  4. CREATE OR REPLACE TRIGGER dolgozo_trigger
  5. BEFORE UPDATE ON dolgozo
  6. FOR EACH ROW
  7. BEGIN
  8.     IF UPDATING ('FIZETES') THEN
  9.         IF :OLD.foglalkozas = 'PRESIDENT' THEN
  10.             :NEW.fizetes := :OLD.fizetes;
  11.             DBMS_OUTPUT.PUT_LINE('A muvelet nem megengedett');
  12.             INSERT INTO trigger_log (idopont, muvelet, esemeny) VALUES (SYSDATE, 'Fizetes emeles','Fizetes nem valtozott');
  13.  
  14.         ELSE
  15.             IF :NEW.fizetes > 4000 THEN
  16.                 INSERT INTO trigger_log (idopont, muvelet, esemeny)
  17.                 VALUES (SYSDATE, 'Fizetes emeles',:OLD.fizetes||' ; '||:NEW.fizetes);
  18.             END IF;
  19.         END IF;
  20.     END IF;
  21. END;
  22. /
  23.  
  24. UPDATE DOLGOZO SET FIZETES = 5000 WHERE DNEV = 'KING';
  25. UPDATE DOLGOZO SET FIZETES = 5002 WHERE DNEV = 'SMITH';
  26.  
  27.  
  28. SELECT * FROM DOLGOZO WHERE DNEV = 'KING';
  29. SELECT* FROM DOLGOZO WHERE DNEV = 'SMITH';
  30.  
  31. DELETE FROM trigger_log;
  32.  
  33. /* 1/2 */
  34. CREATE TABLE trigger_log2 (
  35.   idopont DATE,
  36.   muvelet VARCHAR2(20),
  37.   uj_osszfiz NUMBER
  38. );
  39.  
  40.  
  41. CREATE OR REPLACE TRIGGER trigger2
  42. AFTER INSERT OR DELETE OR UPDATE ON dolgozo
  43. DECLARE
  44.     event_type VARCHAR2(20);
  45.     sum_sal NUMBER;
  46. BEGIN
  47.     IF INSERTING THEN
  48.             event_type := 'INSERT';
  49.         ELSIF DELETING THEN
  50.             event_type := 'DELETE';
  51.         ELSE
  52.             event_type := 'UPDATE';
  53.     END IF;
  54.  
  55.     SELECT SUM(fizetes) INTO sum_sal FROM DOLGOZO;
  56.  
  57.     IF sum_sal > 40000 THEN
  58.           RAISE_APPLICATION_ERROR (-20000,'Tul nagy osszfizetes');
  59.     END IF;
  60.  
  61.     INSERT INTO trigger_log2 (idopont, muvelet, uj_osszfiz) VALUES (SYSDATE, event_type,sum_sal);
  62.  
  63. END;
  64. /
  65.  
  66. INSERT INTO dolgozo (DKOD, DNEV, FOGLALKOZAS, FONOKE, BELEPES, FIZETES, JUTALEK, OAZON) VALUES (1, 'DUMMY', 'MANAGER', 7902, NULL, 30000, 300, 20);
  67. INSERT INTO dolgozo (DKOD, DNEV, FOGLALKOZAS, FONOKE, BELEPES, FIZETES, JUTALEK, OAZON) VALUES (3, 'DUMMY3', 'MANAGER', 7902, NULL, 100, 300, 20);
  68. SELECT * FROM dolgozo;
  69. SELECT * FROM trigger_log2;
  70.  
  71.  
  72. /* 1/3 */
  73.  
  74. CREATE TABLE emp AS (SELECT * FROM NIKOVITS.emp);
  75. CREATE TABLE dept AS (SELECT * FROM NIKOVITS.dept);
  76.  
  77. SELECT * FROM emp;
  78.  
  79. CREATE OR REPLACE VIEW dept_sal AS
  80.    SELECT dname, SUM(sal) sumsal
  81.    FROM dept, emp
  82.    WHERE emp.deptno = dept.deptno
  83.    GROUP BY dname;
  84.  
  85.  
  86. SELECT * FROM dept_sal;
  87. SELECT * FROM dept;
  88. SELECT * FROM emp;
  89.  
  90.  
  91. CREATE OR REPLACE TRIGGER trigger3
  92. INSTEAD OF UPDATE ON dept_sal
  93. DECLARE
  94.     job_count NUMBER;
  95.     job_id NUMBER;
  96. BEGIN
  97.     IF UPDATING('DNAME') THEN
  98.         UPDATE dept SET dname = :NEW.dname WHERE dname = :OLD.dname;
  99.     ELSIF UPDATING('SUMSAL') THEN
  100.         SELECT deptno INTO job_id FROM dept WHERE dname = :NEW.dname;
  101.         SELECT COUNT(*) INTO job_count FROM emp WHERE deptno = job_id;
  102.         DBMS_OUTPUT.PUT_LINE(job_id || ' ' || job_count);
  103.         UPDATE emp SET sal = sal + (:NEW.sumsal - :OLD.sumsal) / job_count WHERE deptno = job_id;
  104.     ELSE
  105.         RAISE_APPLICATION_ERROR (-20000,'Nem megengedett muvelet');
  106.     END IF;
  107. END;
  108.  
  109. UPDATE dept_sal SET dname = 'SALES' WHERE dname = 'BANKING';
  110. UPDATE dept_sal SET sumsal = 40000 WHERE dname = 'SALES';
  111.  
  112. SELECT * FROM emp WHERE deptno = 30;
  113.  
  114. SELECT COUNT(*) FROM emp WHERE deptno = 30;
  115.  
  116. /* 1/4 */
  117. CREATE TABLE ddl_log (
  118.       tulajdonos VARCHAR2(30),
  119.       obj_nev    VARCHAR2(30),
  120.       obj_tipus  VARCHAR2(30),
  121.       muvelet    VARCHAR2(400),
  122.       idopont    DATE
  123. );
  124.  
  125. CREATE OR REPLACE TRIGGER trigger4
  126. AFTER DDL ON SCHEMA
  127. BEGIN
  128.     INSERT INTO ddl_log (tulajdonos, obj_nev, obj_tipus, muvelet, idopont) VALUES (ora_dict_obj_owner, ora_dict_obj_name, ora_dict_obj_type, ora_sysevent, SYSDATE);
  129. END;
  130.  
  131.  
  132. CREATE TABLE DUMMY(
  133.     id NUMBER
  134. );
  135.  
  136. SELECT * FROM DDL_LOG;
  137.  
  138. /* 1/5 */
  139.  
  140. CREATE TABLE naplo (
  141.     datum   DATE,
  142.     felh    VARCHAR2(100),
  143.     gep     VARCHAR2(100),
  144.     ip      VARCHAR2(100),
  145.     osuser  VARCHAR2(100)
  146. );
  147.  
  148. CREATE OR REPLACE TRIGGER trigger5
  149. AFTER LOGON ON SCHEMA
  150. BEGIN
  151.     INSERT INTO naplo (datum, felh, gep, ip, osuser) VALUES (SYSDATE, SYS_CONTEXT('USERENV', 'SESSION_USER'),
  152.     SYS_CONTEXT('USERENV','HOST'),
  153.     SYS_CONTEXT('USERENV','IP_ADDRESS'),
  154.     SYS_CONTEXT('USERENV','OS_USER'));
  155. END;
  156.  
  157. SELECT * FROM naplo;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement