Mam pytanko. Czy jeżeli chcę rozpocząć jakąś dłuższą transakcje w MySQL i wywołuję ją np. przez BEGIN; to czy wcześniej zawsze muszę ustawić Autocommit=0 czy tez wywołanie BEGIN wyłącza na czas rozpoczętej transakcji autocommitowanie?
0
0
Każda operacja wykonywana na MySQL jest wykonywana w transakcji. Jeżeli nie uruchomisz jawnie transakcji, to każda pojedyncza operacja (SELECT, UPDATE itd) jest wykonywana w transakcji i automatycznie zakańczana. SET autocommit zmienia jedynie dla bieżącej sesji tryb kończenia transakcji. Przy autocommit=0 trzeba jawnie użyć polecenie COMMIT lub ROLLBACK aby zakończyć transakcję.
Jeżeli chcesz uruchomić jawnie transakcję, która będzie jawnie zakończona to robisz to poleceniem START TRANSACTION lub BEGIN a kończysz poleceniem COMMIT lub ROLLBACK. Wtedy masz pełną kontrolę nad transakcją i nie musisz korzystać z SET autocommit.
0
Dzięki : )