-- ZAD 1 CREATE SEQUENCE SEQ_PRACOWNIK START WITH 60 INCREMENT BY 10; / CREATE OR REPLACE TRIGGER TRIG_ADD_ZESP BEFORE INSERT ON ZESPOLY FOR EACH ROW BEGIN IF (:NEW.ID_ZESP IS NULL) THEN :NEW.ID_ZESP := SEQ_PRACOWNIK.NEXTVAL; END IF; END; / INSERT INTO ZESPOLY(NAZWA) VALUES('KRYPTOGRAFIA'); INSERT INTO ZESPOLY(NAZWA) SELECT substr('NOWE '||NAZWA,1,20) FROM ZESPOLY WHERE ID_ZESP in (10,20); / -- ZAD 2 ALTER TABLE ZESPOLY ADD LICZBA_PRACOWNIKOW NUMBER(3); UPDATE ZESPOLY Z SET LICZBA_PRACOWNIKOW = ( SELECT COUNT(*) FROM PRACOWNICY WHERE ID_ZESP = Z.ID_ZESP ); CREATE OR REPLACE TRIGGER TRIG_PRACOWNICY_CHECK AFTER INSERT OR DELETE OR UPDATE ON PRACOWNICY FOR EACH ROW BEGIN UPDATE ZESPOLY Z SET LICZBA_PRACOWNIKOW = ( SELECT COUNT(*) FROM PRACOWNICY WHERE Z.ID_ZESP = :OLD.ID_ZESP ); END; / INSERT INTO pracownicy(ID_PRAC,NAZWISKO,ID_ZESP,ID_SZEFA) VALUES(300,'NOWY PRACOWNIK',40,120); / -- ZAD 3 CREATE TABLE HISTORIA ( ID_PRAC NUMBER, PLACA_POD NUMBER, ETAT VARCHAR2(20), ZESPOL VARCHAR2(20), MODYFIKACJA DATE); CREATE OR REPLACE TRIGGER TRIG_PRAC_HISTORIA BEFORE UPDATE OR DELETE OR INSERT OF PLACA_POD, ETAT, ID_ZESP ON PRACOWNICY FOR EACH ROW BEGIN INSERT INTO HISTORIA(ID_PRAC, PLACA_POD, ETAT, ZESPOL, MODYFIKACJA) VALUES (:OLD.ID_PRAC, :OLD.PLACA_POD, :OLD.ETAT, :OLD.ID_ZESP, SYSDATE); END; / UPDATE PRACOWNICY SET PLACA_POD = 800 WHERE NAZWISKO = 'KROLIKOWSKI'; DELETE FROM PRACOWNICY WHERE NAZWISKO = 'HAPKE'; / -- ZAD 4 CREATE OR REPLACE VIEW SZEFOWIE (SZEF, PRACOWNICY) AS (SELECT ID_SZEFA, COUNT(*) FROM PRACOWNICY GROUP BY ID_SZEFA); / SELECT (SELECT P1.NAZWISKO FROM PRACOWNICY P1 WHERE P1.ID_PRAC = P2.ID_SZEFA), P2.COUNT(*) FROM PRACOWNICY P2 GROUP BY P2.ID_SZEFA