PDA

View Full Version : [SQL] trigger con condizione


zebmckey
07-03-2018, 16:48
Buongiorno, io ho una tabella corsi così composta:

CREATE TABLE `corsi` (
`idcorso` int(10) NOT NULL,
`user` int(10) NOT NULL,
`tipo_corso` int(10) NOT NULL,
`data_inizio` date NOT NULL,
`data_fine` date NOT NULL,
`superato` enum('Y','N') DEFAULT NULL,
`giudizio` mediumtext
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Su questa tabella ho attivato un trigger che si attiva quando cancello il record

DELIMITER $$
CREATE TRIGGER `archivia_corso`
BEFORE DELETE ON `corsi`
FOR EACH ROW
INSERT INTO bcorsi
SELECT OLD.idcorso, OLD.user, OLD.tipo_corso, OLD.data_inizio, OLD.data_fine, OLD.superato, OLD.giudizio
$$
DELIMITER ;

tutto funziona perfettamente. Io vorrei modificare questo trigger per fare in modo che si attivi quando "superato=Y".
e ho fatto varie prove una, quella che ritengo più plausibile è questa:

DELIMITER $$
CREATE TRIGGER `archivia_corso`AFTER UPDATE ON `corsi`
FOR EACH ROW
IF NEW.superato=Y
THEN
INSERT INTO bcorsi
SELECT NEW.idcorso, NEW.user, NEW.tipo_corso, NEW.data_inizio, NEW.data_fine, NEW.superato, NEW.giudizio
ENDIF
$$
DELIMITER ;

Ma non va bene lo so già di mio che non funziona!!
Non mi sto raccapezzando, anche perchè vorrei che funzionasse come il primo trigger, cioè quando fa l'update mi sposta la riga nella tabella bcorso.
non trovo una soluzione mi potete aiutare?
Grazie