Advertisement
Guest User

Untitled

a guest
Feb 10th, 2018
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.42 KB | None | 0 0
  1. 1. Rysunek
  2.  
  3. Lekarz
  4. -------
  5. kod_lekarza VARCHAR(5)
  6. nazwisko VARCHAR(20)
  7. specjalizacja VARCHAR(20)
  8. -------
  9. Lekarz_PK(kod_lekarza)
  10.  
  11.         |
  12.         | Wiz_lek_FK
  13.         |
  14.  
  15. Wizyta
  16. -------
  17. nr_wizyty numeric(4)
  18. koszt DECIMAL(10,2)
  19. kod_lekarza VARCHAR(5)
  20. kod_pacjenta numeric(4)
  21. -------
  22. Wizyta_PK(nr_wizyty)
  23. Wiz_lek_FK(kod_lekarza)
  24. Wiz_pac_FK(kod_pacjenta)
  25.  
  26.         |
  27.         | Wiz_pac_FK
  28.         |
  29.  
  30. Pacjent
  31. ------
  32. kod_pacjenta numeric(4)
  33. nazwisko VARCHAR(30)
  34. typ_pacjenta VARCHAR(15)
  35. ------
  36. Pacjent_PK(kod_pacjenta)
  37.  
  38. 2.
  39.  
  40. INSERT INTO Lekarz VALUES('A1000','Chudy','Patologia');
  41. -||-
  42.  
  43. INSERT INTO Pacjent VALUES(1010,'Wozniak','NFZ');
  44. -||-
  45.  
  46. INSERT INTO Wizyta VALUES(2000,0.0,'A1000',1010);
  47. -||-
  48.  
  49. 3 i 4.
  50.  
  51. CREATE sequence SEQ minvalue 1 maxvalue 100000 increment BY 1;
  52.  
  53. CREATE TABLE Typy AS
  54. (
  55.     SELECT SEQ.NEXTVAL "nr_typu", specjalizacja FROM Lekarz
  56. )
  57.  
  58. ALTER TABLE Typy add constraint Typy_PK primary key (nr_typu);
  59. ALTER TABLE Lekarz add constraint Lek_typ_FK foreign key (specjalizacja) references Typy(nr_typu);
  60.  
  61. UPDATE Lekarz l SET l.specjalizacja = Typy.nr_typu FROM Typy t join Lekarz ON l.specjalizacja = t.specjalizacja;
  62.  
  63. 5.
  64. CREATE OR REPLACE TRIGGER T_Wizyta
  65. before INSERT ON Wizyta
  66. FOR each ROW
  67. DECLARE
  68.     v_typ VARCHAR(15);
  69. BEGIN
  70.     SELECT rodzaj INTO v_typ FROM Pacjent p join Wizyta w ON p.kod_pacjenta = w.kod_pacjenta WHERE nr_wizyty = :NEW.nr_wizyty;
  71.     IF v_typ IN ('NFZ') THEN
  72.         :NEW.koszt = 0.0;
  73.     END IF
  74. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement