Rozumiem Twoje pytanie w stylu „czy każde z tych zapytań samo w sobie jest operacją atomową?”. Wtedy odpowiedź brzmi „tak”. Pozostałe dwie odpowiedzi są poprawne, gdy mówią, że wszystkie twoje stwierdzenia razem nie są atomowe.
Atomowość w bazach danych oznacza tylko wszystko albo nic. To nie oznacza poprawność danych. Twoje oświadczenie się powiedzie lub nie. Nie ma to nic wspólnego z połączeniami ani podzapytaniami. Jedna instrukcja to jedna instrukcja, bez względu na to, czy baza danych ma używać tabeli tymczasowej w pamięci, czy na dysku, czy nie.
Transakcje po prostu informują bazę danych, aby traktowała wiele zestawień jako jedno zestawienie. Gdy jedno ze stwierdzeń nie powiedzie się, wszystkie zostaną wycofane.
Ważnym powiązanym tematem jest tutaj poziom izolacji . Możesz o nich poczytać.
EDYTUJ (aby odpowiedzieć na komentarz):
Zgadza się. Dopóki jest to prawidłowe stwierdzenie i nie ma awarii zasilania ani innych przyczyn niepowodzenia zapytania, jest ono wykonywane. Sama atomowość gwarantuje jedynie, że oświadczenie jest/są wykonywane, czy nie. Gwarantuje kompletność i że dane nie są uszkodzone (ponieważ operacja zapisu nie zakończyła się lub coś takiego). Nie gwarantuje to poprawności danych. Mając zapytanie takie jak INSERT INTO foo SELECT MAX(id) + 1 FROM bar;
musisz się upewnić, ustawiając prawidłowy poziom izolacji , że nie dostajesz fantomowych odczytów ani nic takiego.