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

Die Grails-Transaktionsmethode setSavePoint auf mysql verursacht eine Ausnahme

Standardmäßig sind beim Transaktionsmanager für den Ruhezustand und MySQL die Sicherungspunkte nicht aktiviert.

Fügen Sie in BootStrap.groovy Folgendes hinzu:

transactionManager.setNestedTransactionAllowed(true)

Dann können Sie in einer Transaktion Folgendes tun:

Thing.withTransaction { status ->
  //Do some work and a save
  def savePoint = status.createSavepoint()
  //do other work
  if(checkOk)
  {
    //Everything worked so don't need the save point anymore
    status.releaseSavepoint(savePoint)
  }
  else
  {
    //The other work did not work so rollback from it.
    status.rollbackToSavepoint(savePoint)
  }

}