sql >> Database >  >> RDS >> Mysql

Rails transacties

Als je een combinatie van code hebt die expliciete transacties nodig heeft en code die kan vertrouwen op autocommit, moet je autocommit misschien niet voor alle verbindingen uitschakelen. Je bent op de goede weg en vraagt ​​je af of dit van invloed is op andere code. Als je autocommit uitschakelt, maar de andere code niet weet dat het moet committen om zijn werk te laten vastleggen, dan is dat een probleem. Niet-toegewezen werk wordt teruggedraaid wanneer de verbinding wordt verbroken.

Houd er rekening mee dat de standaard opslagengine voor MySQL MijnISAM , die helemaal geen transacties ondersteunt. Wanneer u wijzigingen aanbrengt in een tabel die gebruikmaakt van MyISAM, worden de wijzigingen effectief onmiddellijk doorgevoerd, ongeacht uw expliciete verzoeken om transacties te starten en te beëindigen, en ongeacht de status van automatisch vastleggen. U kunt dus niets terugdraaien, tenzij u uw tabellen hebt gemaakt met de InnoDB storage engine (of andere transactieveilige storage engines zoals BDB ).

Het is onnodig om de autocommit-modus uit te schakelen om transacties in MySQL te gebruiken. Begin eenvoudig een transactie expliciet. De volgende SQL-instructies maken deel uit van een transactie totdat u die transactie vastlegt of terugdraait, ongeacht de waarde van autocommit op uw huidige verbinding.

http://dev.mysql.com/doc/refman/5.0 /en/commit.html zegt:



  1. 2019 Open Source Database Report:Topdatabases, Public Cloud vs. On-Premise, Polyglot Persistence

  2. sql-query om verschillen tussen twee tabellen te retourneren

  3. Migreren van Oracle naar PostgreSQL - wat u moet weten

  4. Hoe kan ik id en sub_id in aflopende volgorde sorteren?