Mysql
 sql >> база данни >  >> RDS >> Mysql

Атомна операция ли е присъединяването вмъкване/актуализация на MySQL?

Разбирам въпроса ви като "всяка от тези заявки сама по себе си е атомна операция?". Тогава отговорът е „да“. Другите два отговора са верни, когато казват, че всичките ви твърдения заедно не са атомни.

Атомарност в базите даннисамо означава всичко или нищо. Тоне означава коректност на данните. Вашето изявление е успешно или не. Няма нищо общо с присъединяването или подзаявките. Един израз е един израз, без значение дали вашата база данни трябва да използва временна таблица в паметта или на диска или не.

Транзакциите просто казват на вашата база данни да третира множество изявления като едно изявление. Когато един от операторите е неуспешен, всички те се връщат назад.

Важна свързана тема тук е нивото на изолация . Може да искате да прочетете за тях.

РЕДАКТИРАНЕ (за да отговорите на коментара):

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изберете редове, където опорната точка има ВСИЧКИ идентификатори

  2. Невалиден опит за четене, когато четецът е затворен

  3. MySQL заявка в цикъл срещу използване на SQL присъединяване

  4. MySQL:Отрязване на таблица в транзакция?

  5. mysql заявка за свързан списък