Mysql
 sql >> Database >  >> RDS >> Mysql

È possibile eseguire un ROLLBACK in un trigger MySQL?

Ho scoperto che questa funzionalità esiste da MySQL 5.5 e non funziona nelle versioni precedenti.

Il trigger non esegue il rollback o il commit. Per avviare qualsiasi rollback, devi sollevare un'eccezione. Pertanto, il tuo comando di inserimento/aggiornamento/eliminazione verrà interrotto. L'azione di rollback o commit deve essere sollevata attorno al tuo comando SQL.

Per sollevare la tua eccezione, nel trigger di XXX (ad es.):

create trigger Trigger_XXX_BeforeInsert before insert on XXX
for each row begin

    if [Test]
    then

      SIGNAL sqlstate '45001' set message_text = "No way ! You cannot do this !";

    end if ;

end ;