
-- SI-T 30/06/2022 - ESE3

-- 3.2)

create table PROGETTI (
     CodProg char(5) not null primary key,
     Titolo varchar(20) not null,
     Budget DEC(8,2) not null,
     TotStipendi DEC(8,2) not null default 0  );

create table PROG_SPECIALI (
     CodProg char(5) not null primary key references PROGETTI );


create table RICERCATORI (
     CodRic char(5) not null primary key,
     Nome varchar(20) not null,
     Stipendio DEC(8,2) not null,
     Livello INT not null,
     CodProg char(5) not null references PROGETTI  );
  
-- 3.3)

-- INSERT per testare il funzionamento

INSERT INTO PROGETTI VALUES
('P0001','Progetto speciale',250000,DEFAULT),
('P0002','Progetto normale',50000,DEFAULT)
;

INSERT INTO PROG_SPECIALI VALUES
('P0001');

CREATE OR REPLACE TRIGGER CONTROLLA_LIVELLO
BEFORE INSERT ON RICERCATORI
REFERENCING NEW AS N
FOR EACH ROW
WHEN (N.Livello < 3 AND EXISTS
	   ( 	SELECT * 
		FROM   PROG_SPECIALI
		WHERE  CodProg = N.CodProg ) )
SIGNAL SQLSTATE '70001' ('Il livello deve essere almeno pari a 3!')

CREATE OR REPLACE TRIGGER AGGIORNA_TOT_STIPENDI
AFTER INSERT ON RICERCATORI
REFERENCING NEW AS N
FOR EACH ROW
UPDATE PROGETTI
SET	  TotStipendi = TotStipendi + N.Stipendio
WHERE	  CodProg = N.CodProg;


INSERT INTO RICERCATORI VALUES
(:codRic, :nome, :stipendio, :livello, :codprog);






