Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement