Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Transakcje Rails

Jeśli masz mieszankę kodu, który wymaga jawnych transakcji i kodu, który może polegać na automatycznym zatwierdzaniu, być może nie powinieneś wyłączać automatycznego zatwierdzania dla wszystkich połączeń. Jesteś na dobrej drodze, zastanawiając się, czy wpłynie to na inny kod. Jeśli wyłączysz autocommit, ale inny kod nie wie, że musi zatwierdzić swoją pracę, to będzie problem. Niezatwierdzona praca jest cofana po zamknięciu połączenia.

Należy pamiętać, że domyślnym silnikiem pamięci masowej dla MySQL jest MójISAM , który w ogóle nie obsługuje transakcji. Gdy wprowadzasz zmiany w tabeli, która używa MyISAM, zmiany są skutecznie zatwierdzane natychmiast, niezależnie od wyraźnych żądań rozpoczęcia i zakończenia transakcji oraz bez względu na stan automatycznego zatwierdzania. Więc nie będziesz mógł wycofać bez względu na wszystko, chyba że utworzyłeś tabele za pomocą InnoDB silnik pamięci masowej (lub inne silniki pamięci masowej bezpieczne dla transakcji, takie jak BDB ).

To niepotrzebne aby wyłączyć tryb automatycznego zatwierdzania, aby używać transakcji w MySQL. Po prostu rozpocznij transakcję wprost. Następujące instrukcje SQL będą częścią transakcji do momentu zatwierdzenia lub wycofania tej transakcji, niezależnie od wartości automatycznego zatwierdzania w bieżącym połączeniu.

http://dev.mysql.com/doc/refman/5.0 /pl/commit.html mówi:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy istnieje różnica w wydajności między BETWEEN i IN w MySQL lub ogólnie w SQL?

  2. Indeks MySQL Integer vs DateTime

  3. Jak zainstalować dbWatch, aby monitorować wydajność MySQL w systemie Linux?

  4. Jak wstawić dane do dwóch różnych tabel?

  5. Grupuj wiersze co 7 dni, zaczynając od określonej daty