
-- SI-T 04/02/2022 - ESE3

-- 3.2)

create table VARIABILI (
    	Nome char(10) not null primary key,
    	Valore DEC(10,2) not null,
    	Quante INT not null DEFAULT 0		);


create table STORICO (
    	Nome char(10) not null references VARIABILI,
    	OldValue DEC(10,2) not null,
	Quando TIMESTAMP not null,
   	Chi char(8) not null,
    	constraint ID_STORICO_ID primary key (Nome, Quando));

   
-- 3.3)

UPDATE VARIABILI
SET	 Valore = :newValue
WHERE	 Nome = :nomeVar ;

CREATE OR REPLACE TRIGGER ARCHIVIA_E_AGGIORNA
AFTER UPDATE OF Valore ON VARIABILI
REFERENCING OLD AS O
FOR EACH ROW
BEGIN ATOMIC
INSERT INTO STORICO(Nome,OldValue,Quando,Chi) 
VALUES (O.Nome,O.Valore,CURRENT TIMESTAMP,CURRENT USER);
UPDATE 	VARIABILI
SET		Quante = Quante + 1
WHERE	  	Nome = O.Nome ;
END
-- possibili anche 2 trigger separati
