Advertisement
Guest User

Untitled

a guest
Jan 28th, 2019
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 4.39 KB | None | 0 0
  1. CREATE TABLE KS3_KLIENT(
  2.     NR_KLIENTA NUMERIC(5) NOT NULL PRIMARY KEY,
  3.     NAZWISKO VARCHAR(40) NOT NULL,
  4.     EMAIL VARCHAR(35) NOT NULL
  5. );
  6.  
  7. CREATE TABLE KS3_SAMOCHOD(
  8.     NR_SAMOCHODU NUMERIC(5) NOT NULL PRIMARY KEY,
  9.     ROK_PRODUKCJI NUMERIC(4),
  10.     MARKA VARCHAR(15) NOT NULL,
  11.     CENA_ZA_1_DZIEN NUMERIC(6,2) NOT NULL
  12. );
  13.  
  14. CREATE TABLE KS3_WYPOZYCZENIE(
  15.     NR_KLIENTA NUMERIC(5) NOT NULL REFERENCES KS3_KLIENT(NR_KLIENTA) ,
  16.     NR_SAMOCHODU NUMERIC(5) NOT NULL REFERENCES KS3_SAMOCHOD(NR_SAMOCHODU) ,
  17.     DATA_WYPOZYCZENIA DATE NOT NULL,
  18.     DATA_ZWROTU DATE NOT NULL,
  19.     STATUS_WYPOZYCZENIA NUMERIC(1) NOT NULL CHECK (STATUS_WYPOZYCZENIA BETWEEN 0 AND 1),
  20.     CONSTRAINT PK_WYPOZYCZENIE PRIMARY KEY(NR_KLIENTA, NR_SAMOCHODU)
  21. );
  22.  
  23. INSERT INTO KS3_KLIENT VALUES (1, 'Kurwieraczki', 'patryk.kurwieraczki@gmail.com');
  24.  
  25. INSERT INTO KS3_KLIENT VALUES (2, 'Kabaczki', 'pan.kabaczki@gmail.com');
  26.  
  27. INSERT INTO KS3_KLIENT VALUES (3, 'Nazwiskowski', 'tadek.nazwiskowski@gmail.com');
  28.  
  29. INSERT INTO KS3_SAMOCHOD VALUES (1, 2004, 'Mercedes', 100);
  30.  
  31. INSERT INTO KS3_SAMOCHOD VALUES (2, 2009, 'Mazda', 95);
  32.  
  33. INSERT INTO KS3_SAMOCHOD VALUES (3, 2018, 'Tesla', 300);
  34.  
  35. INSERT INTO KS3_WYPOZYCZENIE VALUES (1, 2, '19/01/20', '19/01/25', 0);
  36.  
  37. INSERT INTO KS3_WYPOZYCZENIE VALUES (2, 1, '19/01/24', '19/01/30', 1);
  38.  
  39. INSERT INTO KS3_WYPOZYCZENIE VALUES (3, 3, '19/02/15', '19/02/25', 1);
  40.  
  41. INSERT INTO KS3_WYPOZYCZENIE VALUES (1, 3, '19/02/26', '19/03/25', 1);
  42.  
  43. ALTER TABLE KS3_WYPOZYCZENIE
  44.     DROP CONSTRAINT PK_WYPOZYCZENIE;
  45.    
  46. ALTER TABLE KS3_WYPOZYCZENIE
  47.     ADD ID_WYPOZYCZENIA NUMERIC(6);
  48.  
  49. CREATE SEQUENCE SEQ_ID_WYPOZYCZENIA nocache
  50. INCREMENT BY 1
  51. START WITH 1
  52. maxvalue 999999
  53. minvalue 1;
  54.  
  55. UPDATE KS3_WYPOZYCZENIE
  56.     SET ID_WYPOZYCZENIA = SEQ_ID_WYPOZYCZENIA.NEXTVAL
  57. WHERE NR_KLIENTA = 1 AND NR_SAMOCHODU = 2;
  58.  
  59. UPDATE KS3_WYPOZYCZENIE
  60.     SET ID_WYPOZYCZENIA = SEQ_ID_WYPOZYCZENIA.NEXTVAL
  61. WHERE NR_KLIENTA = 2 AND NR_SAMOCHODU = 1;
  62.  
  63. UPDATE KS3_WYPOZYCZENIE
  64.     SET ID_WYPOZYCZENIA = SEQ_ID_WYPOZYCZENIA.NEXTVAL
  65. WHERE NR_KLIENTA = 3 AND NR_SAMOCHODU = 3;
  66.  
  67. UPDATE KS3_WYPOZYCZENIE
  68.     SET ID_WYPOZYCZENIA = SEQ_ID_WYPOZYCZENIA.NEXTVAL
  69. WHERE NR_KLIENTA = 1 AND NR_SAMOCHODU = 3;
  70.  
  71. ALTER TABLE KS3_WYPOZYCZENIE
  72.     MODIFY (ID_WYPOZYCZENIA PRIMARY KEY NOT NULL);
  73.  
  74. CREATE OR REPLACE TRIGGER TR_SET_ID_WYPOZYCZENIA
  75.     BEFORE INSERT ON KS3_WYPOZYCZENIE
  76.     FOR each ROW
  77.     BEGIN
  78.         :NEW.ID_WYPOZYCZENIA := SEQ_ID_WYPOZYCZENIA.NEXTVAL;
  79.     END;
  80.  
  81. INSERT INTO KS3_WYPOZYCZENIE (NR_KLIENTA, NR_SAMOCHODU, DATA_WYPOZYCZENIA, DATA_ZWROTU, STATUS_WYPOZYCZENIA) VALUES (2, 2, '19/02/01', '19/03/07', 0);
  82.  
  83. INSERT INTO KS3_WYPOZYCZENIE (NR_KLIENTA, NR_SAMOCHODU, DATA_WYPOZYCZENIA, DATA_ZWROTU, STATUS_WYPOZYCZENIA) VALUES (3, 3, '19/04/26', '19/05/25', 0);
  84.  
  85. INSERT INTO KS3_WYPOZYCZENIE (NR_KLIENTA, NR_SAMOCHODU, DATA_WYPOZYCZENIA, DATA_ZWROTU, STATUS_WYPOZYCZENIA) VALUES (1, 1, '18/04/22', '18/05/29', 0);
  86.  
  87. 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';
  88.  
  89. DROP TABLE KS3_WYPOZYCZENIE;
  90.    
  91. ALTER TABLE KS3_WYPOZYCZENIE_2018
  92.     RENAME TO KS3_WYPOZYCZENIE;
  93.  
  94. ALTER TABLE KS3_WYPOZYCZENIE
  95.     ADD CONSTRAINT fk_nr_klienta FOREIGN KEY (NR_KLIENTA) REFERENCES KS3_KLIENT(NR_KLIENTA);
  96.  
  97. ALTER TABLE KS3_WYPOZYCZENIE
  98.     ADD CONSTRAINT fk_nr_samochodu FOREIGN KEY (NR_SAMOCHODU) REFERENCES KS3_SAMOCHOD(NR_SAMOCHODU);
  99.    
  100. ALTER TABLE KS3_WYPOZYCZENIE
  101.     ADD CONSTRAINT fk_id_wypozyczenia PRIMARY KEY (ID_WYPOZYCZENIA);
  102.    
  103. ALTER TABLE KS3_WYPOZYCZENIE
  104.     ADD CONSTRAINT check_status_wypozyczenia CHECK (STATUS_WYPOZYCZENIA BETWEEN 0 AND 1);
  105.  
  106. ALTER TABLE KS3_WYPOZYCZENIE
  107.     ADD KOSZT_WYPOZYCZENIA NUMERIC(8,2);
  108.  
  109.  
  110. CREATE OR REPLACE TRIGGER TR_UPDATE_KOSZT_WYPOZYCZENIA
  111.     BEFORE UPDATE OF STATUS_WYPOZYCZENIA ON KS3_WYPOZYCZENIE
  112.     FOR each ROW
  113.     DECLARE
  114.         v_cena_za_dzien NUMERIC(6,2);
  115.     BEGIN
  116.         IF :NEW.STATUS_WYPOZYCZENIA = 0 AND :OLD.STATUS_WYPOZYCZENIA = 1 THEN
  117.         SELECT CENA_ZA_1_DZIEN INTO v_cena_za_dzien FROM KS3_SAMOCHOD WHERE KS3_SAMOCHOD.NR_SAMOCHODU = :NEW.NR_SAMOCHODU AND rownum = 1;
  118.             :NEW.KOSZT_WYPOZYCZENIA := (:NEW.DATA_ZWROTU - :NEW.DATA_WYPOZYCZENIA) * v_cena_za_dzien;
  119.         END IF;
  120.     END;
  121.  
  122. UPDATE KS3_WYPOZYCZENIE
  123.     SET STATUS_WYPOZYCZENIA = 1
  124. WHERE ID_WYPOZYCZENIA = 7;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement