Разбирам въпроса ви като "всяка от тези заявки сама по себе си е атомна операция?". Тогава отговорът е „да“. Другите два отговора са верни, когато казват, че всичките ви твърдения заедно не са атомни.
Атомарност в базите даннисамо означава всичко или нищо. Тоне означава коректност на данните. Вашето изявление е успешно или не. Няма нищо общо с присъединяването или подзаявките. Един израз е един израз, без значение дали вашата база данни трябва да използва временна таблица в паметта или на диска или не.
Транзакциите просто казват на вашата база данни да третира множество изявления като едно изявление. Когато един от операторите е неуспешен, всички те се връщат назад.
Важна свързана тема тук е нивото на изолация . Може да искате да прочетете за тях.
РЕДАКТИРАНЕ (за да отговорите на коментара):
Това е вярно. Докато това е валидно изявление и не настъпва прекъсване на захранването или други причини, поради които заявката може да не успее, това се прави. Атомарността сама по себе си просто гарантира, че изявлението(ите) се/се изпълняват или не. Той гарантира пълнота и че данните не са повредени (защото операцията на запис не е завършила или нещо подобно). Това не ви гарантира коректността на данните. При дадена заявка като INSERT INTO foo SELECT MAX(id) + 1 FROM bar;
трябва да се уверите, като зададете правилното ниво на изолация , че не получавате фантомни показания или нещо подобно.