Ciao sto facendo un progetto di basi di dati con altri due ragazzi e abbiamo un grosso problema con l'unica operazione che ci rimane da implementare. Praticamente in un sistema di Forum e Topic vogliamo che dopo 20 commenti l'utente venga promosso automaticamente a Premium (P).
Ovviamente dobbiamo implementarlo con un trigger ma non riusciamo a superare questo errore se qualcuno riuscisse a darci una mano gliene saremmo davvero molto grati! :)
Le tabelle in questione sono:
UTENTE( Nick, Password, Email, DataNascitaU, Indirizzo, TipoUtente, FanSquadra, NumCom);
COMMENTO( ID, NickAutore, DataC, Testo, TitoloTopic);
Con il vincolo di FK: COMMENTO.NickAutore → UTENTE.Nick;
Il nostro trigger:
Infine l'errore:
[ERRORE] Query SQL non riuscita. Errore: SQLSTATE[HY000]: General error: 1442 Can't update table 'utente' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
Abbiamo letto molto su internet sul perché e per come si verifica questo errore ma non riusciamo a trovare una soluzione! Grazie in anticipo a chi vorrà darci una mano!
Ovviamente dobbiamo implementarlo con un trigger ma non riusciamo a superare questo errore se qualcuno riuscisse a darci una mano gliene saremmo davvero molto grati! :)
Le tabelle in questione sono:
UTENTE( Nick, Password, Email, DataNascitaU, Indirizzo, TipoUtente, FanSquadra, NumCom);
COMMENTO( ID, NickAutore, DataC, Testo, TitoloTopic);
Con il vincolo di FK: COMMENTO.NickAutore → UTENTE.Nick;
Il nostro trigger:
Codice:
DELIMITER |
CREATE TRIGGER Premium
AFTER INSERT ON COMMENTO
FOR EACH ROW
BEGIN
DECLARE numcommenti INT DEFAULT 0;
DECLARE cursore CURSOR FOR SELECT NumCom FROM UTENTE WHERE UTENTE.`Nick`=NEW.NickAutore;
OPEN cursore;
FETCH cursore INTO numcommenti;
CLOSE cursore;
IF numcommenti>'19' THEN UPDATE UTENTE SET UTENTE.`TipoUtente` = 'P' WHERE UTENTE.`Nick`=NEW.NickAutore;
END IF;
END;
Infine l'errore:
[ERRORE] Query SQL non riuscita. Errore: SQLSTATE[HY000]: General error: 1442 Can't update table 'utente' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
Abbiamo letto molto su internet sul perché e per come si verifica questo errore ma non riusciamo a trovare una soluzione! Grazie in anticipo a chi vorrà darci una mano!