[MySQL] Cancellare la riga appena inserita con un trigger

di Anonimizzato11733 il
2 risposte
Salve a tutti, ho scritto questo trigger per un database con MySQL:


create trigger overFriends
after insert on amicizia
for each row

if((select count(*) from amicizia where utente=new.utente)>2000) then	 
   SIGNAL SQLSTATE '75001' set message_text = 'La lista amici di un utente deve essere inferiore a 2000!';
end if;


il trigger presenta il messaggio di errore 'La lista amici di un utente deve essere inferiore a 2000!' se è verificata la condizione dell'if. Il trigger viene eseguito dopo l'inserimento di una riga nella tabella "amicizia", se la condizione dell'if è verificata, però, la riga non dovrebbe più essere inserita nella tabella. Come posso cancellare quest' ultima riga comunque inserita con un'istruzione all'interno del trigger? Con una delete?


Grazie in anticipo per la risposta!

2 Risposte

  • Ciao,
    MySql non permette di modificare dati nella tabella che lancia il trigger...
    già sperimentato...
    quindi se Amicizia lancia il trigger, questo non può nè fare la delete, nè l update, nè insert.
    ti conviene semplicamente controllare prima di inserire.!!
  • Ma no, la tua soluzione va benissimo, tranne per un particolare: il trigger deve essere BEFORE insert, e non after! Se è after, ti darà errore, certo, ma solo dopo aver inserito la riga. Se è before, ti dà errore, e quindi non arriva a inserire la riga.
Devi accedere o registrarti per scrivere nel forum
2 risposte