[MySQL] Cancellare la riga appena inserita con un trigger

di il
2 risposte

[MySQL] Cancellare la riga appena inserita con un trigger

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

  • Re: [MySQL] Cancellare la riga appena inserita con un trigger

    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.!!
  • Re: [MySQL] Cancellare la riga appena inserita con un trigger

    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