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

Proste pytanie mysql dotyczące kluczy podstawowych i insertu

Twój komentarz wyjaśniający mówi, że jesteś zainteresowany upewnieniem się, że LAST_INSERT_ID() nie da błędnego wyniku, jeśli nastąpi kolejne jednoczesne INSERT. Zapewniamy, że użycie LAST_INSERT_ID() jest bezpieczne niezależnie od innych współbieżnych działań. LAST_INSERT_ID() zwraca tylko najnowszy identyfikator wygenerowany podczas bieżącej sesji.

Możesz spróbować sam:

  1. Otwórz dwa okna powłoki, uruchom mysqlclient w każdym i połącz się z bazą danych.
  2. Powłoka 1:WSTAW do tabeli z kluczem AUTO_INCREMENT.
  3. Powłoka 1:SELECT LAST_INSERT_ID(), zobacz wynik.
  4. Powłoka 2:WSTAWIĆ do tej samej tabeli.
  5. Powłoka 2:SELECT LAST_INSERT_ID(), zobacz wynik inny niż w powłoce 1.
  6. Powłoka 1:SELECT LAST_INSERT_ID() ponownie, zobacz powtórzenie wcześniejszego wyniku.

Jeśli się nad tym zastanowisz, to jedyny sposób, który ma sens. Wszystkie bazy danych obsługujące mechanizmy autoinkrementacji klucza muszą działać w ten sposób. Jeśli wynik zależy od sytuacji wyścigu, w której inni klienci mogą WSTAWIĆ jednocześnie, nie będzie niezawodnego sposobu na uzyskanie ostatniego wprowadzonego identyfikatora w bieżącej sesji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybierz menu opcji odczytane z bazy danych i użyj jego wartości

  2. AKTUALIZACJA PHP MYSQL, jeśli istnieje lub INSERT, jeśli nie?

  3. MINUTE() Przykłady – MySQL

  4. Błąd krytyczny PHP:nie znaleziono klasy „PDO”

  5. unikaj sortowania według słowa kluczowego MYSQL IN