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

Rollback automatico se COMMIT TRANSACTION non viene raggiunto

No, le transazioni non vengono annullate non appena si verifica un errore. Ma potresti utilizzare un'applicazione client che applica questa politica.

Ad esempio, se si utilizza il client della riga di comando mysql, normalmente interrompe l'esecuzione quando si verifica un errore e si chiude. L'uscita mentre una transazione è in corso ne provoca il rollback.

Quando scrivi la tua applicazione, puoi controllare la politica di rollback, ma ci sono alcune eccezioni:

  • La chiusura (ovvero la disconnessione dal database) comporta sempre il rollback di una transazione in corso
  • Un deadlock o un timeout di attesa di blocco provoca implicitamente un rollback

A parte queste condizioni, se invochi un comando che genera un errore, l'errore viene restituito normalmente e sei libero di fare quello che vuoi, incluso il commit della transazione comunque.