Nie, transakcje nie są wycofywane, gdy tylko wystąpi błąd. Ale możesz używać aplikacji klienckiej, która stosuje te zasady.
Na przykład, jeśli używasz klienta wiersza poleceń mysql, zwykle przestaje on wykonywać, gdy wystąpi błąd i zakończy działanie. Zakończenie w trakcie trwania transakcji powoduje jej wycofanie.
Kiedy piszesz własną aplikację, możesz kontrolować zasady cofania, ale są pewne wyjątki:
- Zamknięcie (tj. odłączenie od bazy danych) zawsze wycofuje trwającą transakcję
- Zakleszczenie lub przekroczenie limitu czasu oczekiwania na blokadę niejawnie powoduje wycofanie
Poza tymi warunkami, jeśli wywołasz polecenie, które generuje błąd, błąd zostanie zwrócony w normalny sposób i możesz zrobić, co chcesz, w tym i tak zatwierdzić transakcję.