sql >> Databáze >  >> RDS >> Mysql

Když do tabulky MySQL VLOŽÍM více řádků, zvýší se ID pokaždé o 1?

Odpověď zní:dobře, záleží.

V případě myisam je odpověď jednoznačně ano, protože sekvence myisam vkládají požadavky.

V případě innodb je však chování konfigurovatelné od mysql v5.1. před verzí 5.1 je odpověď pro InnoDB také ano, poté závisí na innodb_autoinc_lock_mode nastavení. Podrobnosti naleznete v dokumentaci mysql v konfiguraci InnoDB auto_increment .

Abychom vám poskytli to nejlepší, existují 3 innodb_autoinc_lock_mode nastavení:

  1. tradiční (0)
  2. postupné (1) – výchozí
  3. prokládaný (2)

Další mezery mohou být zkušenosti s hodnotou auto_increment, pokud byla transakce vrácena zpět. Hromadnou vložku lze vrátit zpět pouze jako celek.

AKTUALIZACE: Jak je popsáno výše, získáte scénář 1) nebo 2) , pokud používáte

  • tabulkový modul myisam
  • nebo innodb před mysql v5.1
  • nebo innodb s mysql v5.1 nebo novější a innodb_autoinc_lock_mode je 0 nebo 1

Neexistuje způsob, jak zjistit, která položka se vloží jako první.

Můžete získat scénář 3) nebo 4) pokud používáte

  • innodb s innodb_autoinc_lock_mode 2

Opět neexistuje způsob, jak říci, jak a proč mysql zaměňuje pořadí záznamů.

Pokud tedy vaše otázka souvisí se skutečností, že vložíte 3 záznamy pomocí hromadného vložení a last_insert_id() vrátí hodnotu auto_increment pouze prvního vloženého záznamu a chcete získat ID dalších 2 záznamů jednoduchým přidáním, je to, že možná bude nutné zkontrolovat konfiguraci mysql na základě použitého tabulkového enginu a verze mysql.



  1. Jak se připojit k MySQL z příkazového řádku

  2. CREATE TABLE MySQL vs T-SQL s příklady syntaxe

  3. jak deklarovat %ROWTYPE proměnné, která má slabý typ SYS_REFCURSOR?

  4. Převod DateTime do formátu YYYY-MM-DD na SQL Server