sql >> Database >  >> RDS >> Mysql

Wanneer moet ik MySQL-transacties gebruiken?

Transacties worden gebruikt wanneer u een groep zoekopdrachten heeft die allemaal van elkaar afhankelijk zijn.

Bijvoorbeeld een bank:

  • Bankklant "John" maakt $100 over naar de rekening van "Alice".
  • Voor dit voorbeeld zijn er 2 zoekopdrachten (ik laat geen log- of transactiegeschiedenis zien... enz.). Je moet $ 100 van John's saldo aftrekken en dat toevoegen aan Alice's saldo.
  • Start transaction
  • Aftrekken van John
    • UPDATE accounts SET balance=balance-100 WHERE account='John'
  • Toevoegen aan Alice
    • UPDATE accounts SET balance=balance+100 WHERE account='Alice'
  • commit

Een transactie wordt pas opgeslagen als u deze vastlegt. Dus als er een fout was in een van beide zoekopdrachten, kunt u rollback . aanroepen en maak alle query's ongedaan die zijn uitgevoerd sinds de transactie is gestart. Als om de een of andere reden de vraag om $ 100 aan Alice toe te voegen mislukt, kun je terugdraaien en geen $ 100 van John aftrekken. Het is een manier om ervoor te zorgen dat u zoekopdrachten indien nodig automatisch ongedaan kunt maken.

  • Moet ik een transactie starten wanneer ik twee of meer verwijder-/bijwerk-/invoegquery's uitvoer?

    Afhankelijk van wat de zoekopdrachten doen.

  • Moet ik ook een transactie starten als ik maar één vraag heb over verwijderen/bijwerken/invoegen?

    Niet nodig, tenzij je een manier nodig hebt om de query terug te draaien (ongedaan te maken), zoals je een update wilt doen en deze wilt valideren voordat je commit (opslaan) aanroept.

  • Moet ik een transactie bijvoorbeeld 10 keer op een pagina starten, of beter slechts één keer voor de hele pagina, of raden jullie een maximum aan voor elke pagina (bijvoorbeeld 5)?

    Begin er zoveel als je nodig hebt. Ik betwijfel of je meerdere transacties per pagina hebt, omdat je hoogstwaarschijnlijk één ding doet bij elke pagina die wordt geladen (d.w.z. geld overmaken).



  1. Is het nodig om ROLLBACK te schrijven als query's mislukken?

  2. Best practices voor het opslaan van bankgegevens in een database

  3. ROW_NUMBER in SQL – Selecteer Topvoorbeeld in SQL en SQL Server

  4. SQLite JSON_EXTRACT()