Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE TABLE KS3_KLIENT(
- NR_KLIENTA NUMERIC(5) NOT NULL PRIMARY KEY,
- NAZWISKO VARCHAR(40) NOT NULL,
- EMAIL VARCHAR(35) NOT NULL
- );
- CREATE TABLE KS3_SAMOCHOD(
- NR_SAMOCHODU NUMERIC(5) NOT NULL PRIMARY KEY,
- ROK_PRODUKCJI NUMERIC(4),
- MARKA VARCHAR(15) NOT NULL,
- CENA_ZA_1_DZIEN NUMERIC(6,2) NOT NULL
- );
- CREATE TABLE KS3_WYPOZYCZENIE(
- NR_KLIENTA NUMERIC(5) NOT NULL REFERENCES KS3_KLIENT(NR_KLIENTA) ,
- NR_SAMOCHODU NUMERIC(5) NOT NULL REFERENCES KS3_SAMOCHOD(NR_SAMOCHODU) ,
- DATA_WYPOZYCZENIA DATE NOT NULL,
- DATA_ZWROTU DATE NOT NULL,
- STATUS_WYPOZYCZENIA NUMERIC(1) NOT NULL CHECK (STATUS_WYPOZYCZENIA BETWEEN 0 AND 1),
- CONSTRAINT PK_WYPOZYCZENIE PRIMARY KEY(NR_KLIENTA, NR_SAMOCHODU)
- );
- INSERT INTO KS3_KLIENT VALUES (1, 'Kurwieraczki', 'patryk.kurwieraczki@gmail.com');
- INSERT INTO KS3_KLIENT VALUES (2, 'Kabaczki', 'pan.kabaczki@gmail.com');
- INSERT INTO KS3_KLIENT VALUES (3, 'Nazwiskowski', 'tadek.nazwiskowski@gmail.com');
- INSERT INTO KS3_SAMOCHOD VALUES (1, 2004, 'Mercedes', 100);
- INSERT INTO KS3_SAMOCHOD VALUES (2, 2009, 'Mazda', 95);
- INSERT INTO KS3_SAMOCHOD VALUES (3, 2018, 'Tesla', 300);
- INSERT INTO KS3_WYPOZYCZENIE VALUES (1, 2, '19/01/20', '19/01/25', 0);
- INSERT INTO KS3_WYPOZYCZENIE VALUES (2, 1, '19/01/24', '19/01/30', 1);
- INSERT INTO KS3_WYPOZYCZENIE VALUES (3, 3, '19/02/15', '19/02/25', 1);
- INSERT INTO KS3_WYPOZYCZENIE VALUES (1, 3, '19/02/26', '19/03/25', 1);
- ALTER TABLE KS3_WYPOZYCZENIE
- DROP CONSTRAINT PK_WYPOZYCZENIE;
- ALTER TABLE KS3_WYPOZYCZENIE
- ADD ID_WYPOZYCZENIA NUMERIC(6);
- CREATE SEQUENCE SEQ_ID_WYPOZYCZENIA nocache
- INCREMENT BY 1
- START WITH 1
- maxvalue 999999
- minvalue 1;
- UPDATE KS3_WYPOZYCZENIE
- SET ID_WYPOZYCZENIA = SEQ_ID_WYPOZYCZENIA.NEXTVAL
- WHERE NR_KLIENTA = 1 AND NR_SAMOCHODU = 2;
- UPDATE KS3_WYPOZYCZENIE
- SET ID_WYPOZYCZENIA = SEQ_ID_WYPOZYCZENIA.NEXTVAL
- WHERE NR_KLIENTA = 2 AND NR_SAMOCHODU = 1;
- UPDATE KS3_WYPOZYCZENIE
- SET ID_WYPOZYCZENIA = SEQ_ID_WYPOZYCZENIA.NEXTVAL
- WHERE NR_KLIENTA = 3 AND NR_SAMOCHODU = 3;
- UPDATE KS3_WYPOZYCZENIE
- SET ID_WYPOZYCZENIA = SEQ_ID_WYPOZYCZENIA.NEXTVAL
- WHERE NR_KLIENTA = 1 AND NR_SAMOCHODU = 3;
- ALTER TABLE KS3_WYPOZYCZENIE
- MODIFY (ID_WYPOZYCZENIA PRIMARY KEY NOT NULL);
- CREATE OR REPLACE TRIGGER TR_SET_ID_WYPOZYCZENIA
- BEFORE INSERT ON KS3_WYPOZYCZENIE
- FOR each ROW
- BEGIN
- :NEW.ID_WYPOZYCZENIA := SEQ_ID_WYPOZYCZENIA.NEXTVAL;
- END;
- INSERT INTO KS3_WYPOZYCZENIE (NR_KLIENTA, NR_SAMOCHODU, DATA_WYPOZYCZENIA, DATA_ZWROTU, STATUS_WYPOZYCZENIA) VALUES (2, 2, '19/02/01', '19/03/07', 0);
- INSERT INTO KS3_WYPOZYCZENIE (NR_KLIENTA, NR_SAMOCHODU, DATA_WYPOZYCZENIA, DATA_ZWROTU, STATUS_WYPOZYCZENIA) VALUES (3, 3, '19/04/26', '19/05/25', 0);
- INSERT INTO KS3_WYPOZYCZENIE (NR_KLIENTA, NR_SAMOCHODU, DATA_WYPOZYCZENIA, DATA_ZWROTU, STATUS_WYPOZYCZENIA) VALUES (1, 1, '18/04/22', '18/05/29', 0);
- CREATE TABLE KS3_WYPOZYCZENIE_2018 AS SELECT * FROM KS3_WYPOZYCZENIE WHERE DATA_WYPOZYCZENIA < '19/01/01' AND DATA_WYPOZYCZENIA > '17/12/31' AND DATA_ZWROTU < '19/01/01' AND DATA_WYPOZYCZENIA > '17/12/31';
- DROP TABLE KS3_WYPOZYCZENIE;
- ALTER TABLE KS3_WYPOZYCZENIE_2018
- RENAME TO KS3_WYPOZYCZENIE;
- ALTER TABLE KS3_WYPOZYCZENIE
- ADD CONSTRAINT fk_nr_klienta FOREIGN KEY (NR_KLIENTA) REFERENCES KS3_KLIENT(NR_KLIENTA);
- ALTER TABLE KS3_WYPOZYCZENIE
- ADD CONSTRAINT fk_nr_samochodu FOREIGN KEY (NR_SAMOCHODU) REFERENCES KS3_SAMOCHOD(NR_SAMOCHODU);
- ALTER TABLE KS3_WYPOZYCZENIE
- ADD CONSTRAINT fk_id_wypozyczenia PRIMARY KEY (ID_WYPOZYCZENIA);
- ALTER TABLE KS3_WYPOZYCZENIE
- ADD CONSTRAINT check_status_wypozyczenia CHECK (STATUS_WYPOZYCZENIA BETWEEN 0 AND 1);
- ALTER TABLE KS3_WYPOZYCZENIE
- ADD KOSZT_WYPOZYCZENIA NUMERIC(8,2);
- CREATE OR REPLACE TRIGGER TR_UPDATE_KOSZT_WYPOZYCZENIA
- BEFORE UPDATE OF STATUS_WYPOZYCZENIA ON KS3_WYPOZYCZENIE
- FOR each ROW
- DECLARE
- v_cena_za_dzien NUMERIC(6,2);
- BEGIN
- IF :NEW.STATUS_WYPOZYCZENIA = 0 AND :OLD.STATUS_WYPOZYCZENIA = 1 THEN
- SELECT CENA_ZA_1_DZIEN INTO v_cena_za_dzien FROM KS3_SAMOCHOD WHERE KS3_SAMOCHOD.NR_SAMOCHODU = :NEW.NR_SAMOCHODU AND rownum = 1;
- :NEW.KOSZT_WYPOZYCZENIA := (:NEW.DATA_ZWROTU - :NEW.DATA_WYPOZYCZENIA) * v_cena_za_dzien;
- END IF;
- END;
- UPDATE KS3_WYPOZYCZENIE
- SET STATUS_WYPOZYCZENIA = 1
- WHERE ID_WYPOZYCZENIA = 7;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement