Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ist ein ROLLBACK in einem MySQL-Trigger möglich?

Ich habe herausgefunden, dass diese Funktion seit MySQL 5.5 existiert und in früheren Versionen nicht funktioniert.

Der Trigger führt kein Rollback oder Commit durch. Um ein Rollback einzuleiten, müssen Sie eine Ausnahme auslösen. Daher wird Ihr Einfüge-/Aktualisierungs-/Löschbefehl abgebrochen. Die Rollback- oder Commit-Aktion muss um Ihren SQL-Befehl ausgelöst werden.

Um Ihre Ausnahme auszulösen, geben Sie in Ihrem XXX-Trigger (z. B.) :

ein
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 ;