Advertisement
patryk

SBD_L13

Jun 3rd, 2015
585
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 1.80 KB | None | 0 0
  1. -- ZAD 1
  2. CREATE SEQUENCE SEQ_PRACOWNIK
  3.   START WITH 60
  4.   INCREMENT BY 10;
  5. /
  6. CREATE OR REPLACE TRIGGER TRIG_ADD_ZESP
  7. BEFORE INSERT ON ZESPOLY
  8. FOR EACH ROW
  9. BEGIN
  10.   IF (:NEW.ID_ZESP IS NULL) THEN
  11.     :NEW.ID_ZESP := SEQ_PRACOWNIK.NEXTVAL;
  12.   END IF;
  13. END;
  14. /
  15. INSERT INTO ZESPOLY(NAZWA) VALUES('KRYPTOGRAFIA');
  16. INSERT INTO ZESPOLY(NAZWA) SELECT substr('NOWE '||NAZWA,1,20) FROM ZESPOLY
  17. WHERE ID_ZESP IN (10,20);
  18. /
  19.  
  20. -- ZAD 2
  21. ALTER TABLE ZESPOLY ADD LICZBA_PRACOWNIKOW NUMBER(3);
  22.  
  23. UPDATE ZESPOLY Z
  24.   SET LICZBA_PRACOWNIKOW =
  25.   ( SELECT COUNT(*) FROM PRACOWNICY WHERE ID_ZESP = Z.ID_ZESP );
  26.  
  27. CREATE OR REPLACE TRIGGER TRIG_PRACOWNICY_CHECK
  28.   AFTER INSERT OR DELETE OR UPDATE ON PRACOWNICY
  29.   FOR EACH ROW
  30.  
  31.   BEGIN
  32.     UPDATE ZESPOLY Z
  33.       SET LICZBA_PRACOWNIKOW =
  34.       ( SELECT COUNT(*) FROM PRACOWNICY WHERE Z.ID_ZESP = :OLD.ID_ZESP );
  35.   END;
  36. /
  37. INSERT INTO pracownicy(ID_PRAC,NAZWISKO,ID_ZESP,ID_SZEFA)
  38. VALUES(300,'NOWY PRACOWNIK',40,120);
  39. /
  40.  
  41.  
  42. -- ZAD 3
  43. CREATE TABLE HISTORIA (
  44.  ID_PRAC NUMBER,
  45.  PLACA_POD NUMBER,
  46.  ETAT VARCHAR2(20),
  47.  ZESPOL VARCHAR2(20),
  48.  MODYFIKACJA DATE);
  49.  
  50.  CREATE OR REPLACE TRIGGER TRIG_PRAC_HISTORIA
  51.  BEFORE UPDATE OR DELETE OR INSERT OF PLACA_POD, ETAT, ID_ZESP ON PRACOWNICY
  52.  FOR EACH ROW
  53.  BEGIN
  54.   INSERT INTO HISTORIA(ID_PRAC, PLACA_POD, ETAT, ZESPOL, MODYFIKACJA) VALUES (:OLD.ID_PRAC, :OLD.PLACA_POD, :OLD.ETAT, :OLD.ID_ZESP, SYSDATE);
  55.  END;
  56.  /
  57.  
  58.  UPDATE PRACOWNICY SET PLACA_POD = 800 WHERE NAZWISKO = 'KROLIKOWSKI';
  59.  DELETE FROM PRACOWNICY WHERE NAZWISKO = 'HAPKE';
  60.  /
  61.  
  62.  
  63.  -- ZAD 4
  64.  CREATE OR REPLACE VIEW SZEFOWIE
  65.   (SZEF, PRACOWNICY) AS
  66.   (SELECT ID_SZEFA, COUNT(*) FROM PRACOWNICY GROUP BY ID_SZEFA);
  67.  
  68. /
  69. SELECT (SELECT P1.NAZWISKO FROM PRACOWNICY P1 WHERE P1.ID_PRAC = P2.ID_SZEFA), P2.COUNT(*) FROM PRACOWNICY P2 GROUP BY P2.ID_SZEFA
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement