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

Лесен въпрос за mysql относно първични ключове и вмъкване

Вашият уточняващ коментар казва, че се интересувате да се уверите, че LAST_INSERT_ID() не дава грешен резултат, ако се случи друго едновременно INSERT. Бъдете сигурни, че е безопасно да използвате LAST_INSERT_ID() независимо от друга едновременна дейност. LAST_INSERT_ID() връща само последния идентификатор, генериран по време на текущата сесия.

Можете да опитате сами:

  1. Отворете два прозореца на обвивката, стартирайте mysqlclient във всеки и се свържете с базата данни.
  2. Обвивка 1:INSERT в таблица с ключ AUTO_INCREMENT.
  3. Обвивка 1:SELECT LAST_INSERT_ID(), вижте резултата.
  4. Обвивка 2:INSERT в същата таблица.
  5. Обвивка 2:SELECT LAST_INSERT_ID(),вижте резултата, различен от обвивка 1.
  6. Обвивка 1:SELECT LAST_INSERT_ID()отново, вижте повторение на по-ранен резултат.

Ако се замислите, това е единственият начин, който има смисъл. Всички бази данни, които поддържат механизми за автоматично увеличаване на ключовете, трябва да действат по този начин. Ако резултатът зависи от състояние на състезание с други клиенти, които евентуално INSERTING едновременно, тогава няма да има надежден начин да получите последната въведена стойност на идентификатора в текущата ви сесия.



  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. html drill down падащо меню избраната стойност не се вмъква в MYSQL

  3. php pdo получава само една стойност от mysql; стойност, равна на променлива

  4. Как да покажа категория и подкатегория?

  5. Получаване на org.hibernate.exception.JDBCConnectionException:не можа да изпълни заявка дори през JNDI