ta powinna być łatwa do tych znanych z PostgreSQL:przywracania po błędzie w transakcji
Moja aplikacja wydaje begin_work
, czy szereg operacji, a następnie wystawia commit
. Operacje i zatwierdzenia są pakowane wewnątrz bloku try-catch, którego instrukcja catch wykonuje rollback
. Założenie: jeśli wystąpi błąd podczas operacji SQL, Postgresql automatycznie wycofa transakcję, a zatem moje wycofanie stanie się zbędne , ale nieszkodliwe. Czy to założenie jest poprawne?
(Powodem, dla którego jestem rollbacking anyway. Tylko w przypadku wyjątek niezwiązane z ocurs operacji SQL)
Wygląda na to, że moje założenie było błędne, ale i tak miałem rację. Dzięki! –
@JonSmark Prawidłowe. Pg oznacza, że transakcja została przerwana, ale nie powraca do trybu automatycznego zatwierdzania ani nie otwiera nowej transakcji do czasu wycofania. Powodem tego jest to, że w przeciwnym razie możesz mieć nieprzyjemne sytuacje, takie jak 'INSERT INTO do historytable SELECT * FROM maintable;' niepowodzenie, następnie następujące 'TRUNCATE TABLE maintable' powodzenie. Oooo! –