PROBLEMA [MYSQL] Errore 1442 con trigger! HELP

frelap

Nuovo Utente
1
0
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:

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!
 

Entra

oppure Accedi utilizzando

Discussioni Simili

Hot: Sei vaccinato? [sondaggio anonimo]

  • Primo ciclo vaccinale completo (1-2 dosi)

    Voti: 476 78.3%
  • Fatta 1a dose, in attesa della 2a

    Voti: 21 3.5%
  • Sono prenotato per la 1a dose

    Voti: 12 2.0%
  • Non so se vaccinarmi

    Voti: 16 2.6%
  • Non ho intenzione di vacciarmi

    Voti: 64 10.5%
  • Fatta anche la terza dose

    Voti: 19 3.1%