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

MySQL Автоматично увеличаване на колоните при TRANSACTION, COMMIT и ROLLBACK

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

Относно вашия коментар:Ако мога да го кажа по-ясно, всяка промяна в обхвата на транзакция може да бъде отменена. Броячът за автоматично увеличение не се връща назад, така че не се подчинява на атомарност на транзакции. Нито се подчинява наизолацията защото друга транзакция получава следващата стойност, въпреки че транзакцията ви все още не е ангажирана.

Начинът, по който работи автоматичното увеличение, означава, че понякога, ако вмъкнете някои редове и след това върнете транзакцията си назад, стойностите, които сте разпределили с автоматично увеличение, се губят завинаги!

Но това е наред. Стойностите на първичния ключ трябва да са уникални, но не е необходимо да са последователни. С други думи, те не са номера на редове и не бива да ги използвате по този начин. Така че никога не трябва да намалявате стойностите, създадени чрез автоматично увеличение.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използвайте параметър на съхранена процедура за параметър на единица от DATE_SUB

  2. Как да тествате SQL изявление за актуализиране, преди да го стартирате?

  3. Мога ли да параметризирам името на таблицата в подготвено изявление?

  4. Как да извикам Java код от MySQL?

  5. Защо _ (долно черта) съвпада с - (тире)?