sql >> Base de Datos >  >> RDS >> Mysql

¿Es posible hacer un ROLLBACK en un disparador de MySQL?

Descubrí que esta funcionalidad existe desde MySQL 5.5 y no funciona en versiones anteriores.

El activador no revierte ni confirma. Para iniciar cualquier reversión, debe generar una excepción. Por lo tanto, su comando de inserción/actualización/eliminación se cancelará. La acción de reversión o confirmación debe generarse en torno a su comando SQL.

Para generar su excepción, en el activador de su XXX (p. ej.):

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 ;