sql >> Databasteknik >  >> RDS >> Mysql

Rälstransaktioner

Om du har en blandning av kod som behöver explicita transaktioner och kod som kan förlita sig på autocommit, kanske du inte borde inaktivera autocommit för alla anslutningar. Du är på rätt spår och undrar om detta kommer att påverka annan kod. Om du inaktiverar autocommit, men den andra koden inte vet att den måste commit för att få sitt arbete begått, kommer det att bli ett problem. Oengagerat arbete rullas tillbaka när anslutningen stängs.

Du bör vara medveten om att standardlagringsmotorn för MySQL är MyISAM , som inte stöder transaktioner alls. När du gör ändringar i en tabell som använder MyISAM, genomförs ändringarna omedelbart, oavsett dina uttryckliga förfrågningar om att påbörja och avsluta transaktioner, och oavsett tillståndet för autocommit. Så du kommer inte att kunna gå tillbaka oavsett vad, om du inte skapat dina tabeller med InnoDB lagringsmotor (eller andra transaktionssäkra lagringsmotorer som BDB ).

Det är onödigt för att inaktivera autocommit-läge för att använda transaktioner i MySQL. Börja helt enkelt en transaktion explicit. Följande SQL-satser kommer att vara en del av en transaktion tills du genomför eller återställer transaktionen, oavsett värdet av autocommit på din nuvarande anslutning.

http://dev.mysql.com/doc/refman/5.0 /en/commit.html säger:



  1. Vad är SQL Server?

  2. Hur man SELECT baserat på värdet av en annan SELECT

  3. Få senast infogade autoinkrement-id i mysql

  4. jQuery Validera användningen av fjärrmetod för att kontrollera om användarnamnet redan finns