Rozumím vaší otázce typu „je každý z těchto dotazů sám o sobě atomovou operací?“. Pak je odpověď "ano". Další dvě odpovědi jsou správné, když říkají, že všechna vaše tvrzení dohromady nejsou atomická.
Atomicita v databázích pouze znamená všechno nebo nic. To neznamená správnost údajů. Vaše prohlášení uspěje nebo ne. Nemá to nic společného s připojeními nebo poddotazy. Jeden příkaz je jeden příkaz, bez ohledu na to, zda vaše databáze musí používat dočasnou tabulku v paměti nebo na disku či nikoli.
Transakce pouze sdělují vaší databázi, aby považovala více příkazů za jeden příkaz. Když jeden z příkazů selže, všechny jsou vráceny zpět.
Důležitým souvisejícím tématem je zde úroveň izolace . Možná si o nich budete chtít něco přečíst.
UPRAVIT (pro odpověď na komentář):
To je správně. Dokud se jedná o platné prohlášení a nedojde k výpadku napájení nebo jiným důvodům, proč by dotaz mohl selhat, je hotovo. Atomicita sama o sobě jen zaručuje, že se prohlášení (příkazy) provádí nebo ne. Zaručuje úplnost a nepoškozenost dat (protože operace zápisu nebyla dokončena nebo tak něco). Nezaručuje vám správnost údajů. Zadaný dotaz jako INSERT INTO foo SELECT MAX(id) + 1 FROM bar;
musíte se ujistit prostřednictvím nastavení správné úrovně izolace , že nedostanete fantomové čtení nebo tak něco.