Advertisement
justpalma

sql trigger

Aug 19th, 2019
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.26 KB | None | 0 0
  1. CREATE TABLE Paziente_Ricoverato
  2. (
  3. CF CHAR(16) PRIMARY KEY,
  4. N_Telefono_Familiare CHAR(10) NOT NULL,
  5. Matricola_medico CHAR(6) NOT NULL,
  6. Nome_reparto VARCHAR(30) NOT NULL,
  7. Numero_letto NUMEROID NOT NULL,
  8. Numero_camera NUMEROID NOT NULL,
  9. FOREIGN KEY(CF) references Paziente(CF)
  10. ON UPDATE CASCADE ON DELETE CASCADE,
  11. FOREIGN KEY(Matricola_medico) references Medico(Matricola)
  12. ON UPDATE CASCADE ON DELETE NO ACTION,
  13. FOREIGN KEY(Numero_letto, Numero_camera, Nome_reparto) references Letto
  14. ON UPDATE CASCADE ON DELETE NO ACTION
  15. );
  16.  
  17.  
  18. CREATE TABLE Medico
  19. (
  20. Matricola CHAR(6) PRIMARY KEY,
  21. CF CHAR(16) NOT NULL UNIQUE, --alternative key
  22. Nome VARCHAR(25) NOT NULL,
  23. Cognome VARCHAR(25) NOT NULL,
  24. Sesso CHAR(1) NOT NULL,
  25. Data_nascita DATE NOT NULL,
  26. CHECK(LENGTH(CF)=16),
  27. CHECK(LENGTH(Matricola)=6),
  28. CHECK(Sesso = 'M' or Sesso = 'F' or Sesso = 'm' or Sesso = 'f' )
  29. --AGGIUGNRE CONTROLLO MATRICOLA
  30. );
  31.  
  32. CREATE FUNCTION max_paz_med() RETURNS trigger AS $max_paz_med$
  33. BEGIN
  34. IF(select count(*) from Paziente_ricoverato group by Matricola_medico) = 10
  35. THEN RAISE EXCEPTION 'BEDO';
  36. END IF;
  37. RETURN NEW;
  38. END;
  39. $max_paz_med$ LANGUAGE plpgsql;
  40.  
  41.  
  42. CREATE TRIGGER Medico
  43. BEFORE INSERT OR UPDATE
  44. ON Paziente_ricoverato
  45. EXECUTE PROCEDURE max_paz_med();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement