Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Kolumny automatycznego przyrostu MySQL w transakcjach TRANSACTION, COMMIT i ROLLBACK

Nie, mechanizmy autoinkrementacji muszą pracuj poza zakresem transakcji, ponieważ inny użytkownik może wstawiać do tej samej tabeli przed zakończeniem transakcji. Transakcja innego użytkownika musi być w stanie przydzielić następną wartość, zanim dowie się, czy transakcja wykorzystuje właśnie przydzieloną wartość.

Relacja z komentarza:Jeśli mogę powiedzieć to jaśniej, każda zmiana zakresu transakcji może zostać cofnięta. Licznik automatycznego przyrostu nie jest cofany, więc nie jest zgodny z atomowością transakcji. Nie jest też posłuszny izolacji ponieważ inna transakcja otrzymuje następną wartość, mimo że transakcja nie została jeszcze zatwierdzona.

Sposób, w jaki działa auto-inkrementacja, oznacza, że ​​czasami, jeśli wstawisz kilka wierszy, a następnie cofniesz transakcję, wartości przydzielone przez auto-inkrementację zostaną utracone na zawsze!

Ale to jest w porządku. Wartości klucza podstawowego muszą być unikatowe, ale nie muszą być kolejne. Innymi słowy, nie są to numery wierszy i nie powinieneś ich w ten sposób używać. Dlatego nigdy nie powinieneś potrzebować dekrementacji wartości utworzonych przez automatyczną inkrementację.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL — łączy bazy danych na różnych serwerach za pomocą Pythona?

  2. Wykonanie zapytania w PHP trwa 90 razy dłużej niż w przypadku klienta MySQL

  3. Jak najlepiej porównać do 0 w PHP?

  4. Spring data JPA tylko jeden klucz złożony to problem z automatyczną inkrementacją

  5. Pusta baza danych w MySQL i PHP?