Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE TABLE Paziente_Ricoverato
- (
- CF CHAR(16) PRIMARY KEY,
- N_Telefono_Familiare CHAR(10) NOT NULL,
- Matricola_medico CHAR(6) NOT NULL,
- Nome_reparto VARCHAR(30) NOT NULL,
- Numero_letto NUMEROID NOT NULL,
- Numero_camera NUMEROID NOT NULL,
- FOREIGN KEY(CF) references Paziente(CF)
- ON UPDATE CASCADE ON DELETE CASCADE,
- FOREIGN KEY(Matricola_medico) references Medico(Matricola)
- ON UPDATE CASCADE ON DELETE NO ACTION,
- FOREIGN KEY(Numero_letto, Numero_camera, Nome_reparto) references Letto
- ON UPDATE CASCADE ON DELETE NO ACTION
- );
- CREATE TABLE Medico
- (
- Matricola CHAR(6) PRIMARY KEY,
- CF CHAR(16) NOT NULL UNIQUE, --alternative key
- Nome VARCHAR(25) NOT NULL,
- Cognome VARCHAR(25) NOT NULL,
- Sesso CHAR(1) NOT NULL,
- Data_nascita DATE NOT NULL,
- CHECK(LENGTH(CF)=16),
- CHECK(LENGTH(Matricola)=6),
- CHECK(Sesso = 'M' or Sesso = 'F' or Sesso = 'm' or Sesso = 'f' )
- --AGGIUGNRE CONTROLLO MATRICOLA
- );
- CREATE FUNCTION max_paz_med() RETURNS trigger AS $max_paz_med$
- BEGIN
- IF(select count(*) from Paziente_ricoverato group by Matricola_medico) = 10
- THEN RAISE EXCEPTION 'BEDO';
- END IF;
- RETURN NEW;
- END;
- $max_paz_med$ LANGUAGE plpgsql;
- CREATE TRIGGER Medico
- BEFORE INSERT OR UPDATE
- ON Paziente_ricoverato
- EXECUTE PROCEDURE max_paz_med();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement