sql >> Databáze >  >> RDS >> Mysql

Železniční transakce

Pokud máte kombinaci kódu, který vyžaduje explicitní transakce, a kódu, který se může spolehnout na automatické potvrzení, možná byste neměli zakázat automatické potvrzení pro všechna připojení. Jste na správné cestě a zajímá vás, zda to ovlivní další kód. Pokud zakážete automatické potvrzení, ale druhý kód neví, že se musí zavázat, aby byla jeho práce potvrzena, bude to problém. Nesvěřená práce je vrácena zpět, když se připojení uzavře.

Měli byste si být vědomi toho, že výchozí úložiště pro MySQL je MyISAM , který transakce vůbec nepodporuje. Když provedete změny v tabulce, která používá MyISAM, změny se účinně potvrdí okamžitě, bez ohledu na vaše explicitní požadavky na zahájení a dokončení transakcí a bez ohledu na stav automatického potvrzení. Bez ohledu na to se tedy nebudete moci vrátit zpět, pokud své tabulky nevytvoříte pomocí InnoDB úložný modul (nebo jiné úložné stroje bezpečné pro transakce, jako je BDB ).

Je to zbytečné zakázat režim automatického potvrzení pro použití transakcí v MySQL. Jednoduše zahajte transakci explicitně. Následující příkazy SQL budou součástí transakce, dokud tuto transakci nepotvrdíte nebo nevrátíte zpět, bez ohledu na hodnotu automatického potvrzení u vašeho aktuálního připojení.

http://dev.mysql.com/doc/refman/5.0 /cs/commit.html říká:



  1. Jak získat poslední položku z databáze MYSQL?

  2. Proč se čas MySQL unixu zastaví pod limitem 32 bitů bez znaménka?

  3. Vraťte řádky v přesném pořadí, v jakém byly vloženy

  4. Jak mohu potvrdit, že databáze je Oracle a jakou verzi používá SQL?