
-- SI-T 18/01/2021 - ESE3

-- 3.2)
create table UTENTI (
     Username char(10) not null primary key,
     Punteggio INT not null	 DEFAULT 0				);
     
create table RISPOSTE (
     NumDomanda INT not null,
     ID char(1) not null,
     Testo varchar(50) not null,
     Punti INT not null,
     constraint ID_RISPOSTE_ID primary key (NumDomanda,ID)	);

create table UR (
     Numero INT not null,
     ID char(1) not null,
     Username char(10) not null references UTENTI,
     constraint FKUR_RIS foreign key (Numero,ID) references RISPOSTE,
     constraint ID_UR_ID primary key (Numero,Username)				);
     
-- 3.3)
INSERT INTO UR
VALUES (:numdomanda,:idrisposta,:username);

CREATE OR REPLACE TRIGGER UPDATE_PUNTEGGIO
AFTER INSERT ON UR
REFERENCING NEW AS N
FOR EACH ROW
UPDATE 	UTENTI
SET		PUNTEGGIO = PUNTEGGIO + (	SELECT	R.PUNTI
									FROM	RISPOSTE R
									WHERE 	(R.NUMERO,R.ID) = (N.NUMERO,N.ID) )
WHERE	USERNAME = N.USERNAME ;

