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

MySQL Auto Increment Sloupce o TRANSAKCI, COMMIT a ROLLBACK

Ne, mechanismy automatického zvyšování musí pracovat mimo rozsah transakcí, protože jiný uživatel může vkládat do stejné tabulky před dokončením transakce. Transakce druhého uživatele musí být schopna přidělit další hodnotu, než bude vědět, zda vaše transakce používá hodnotu, kterou jste právě přidělili.

K vašemu komentáři:Pokud to mohu říci jasněji, jakákoli změna v rozsahu transakce může být vrácena zpět. Počítadlo automatického přírůstku není vráceno zpět, takže se neřídí atomicitou transakcí. Neposlouchá ani izolaci protože další transakce získá další hodnotu, i když vaše transakce ještě nebyla potvrzena.

Způsob, jakým funguje automatické zvýšení, znamená, že někdy, když vložíte nějaké řádky a poté svou transakci vrátíte zpět, hodnoty, které jste alokovali pomocí automatického zvýšení, budou navždy ztraceny!

Ale to je v pořádku. Hodnoty primárního klíče musí být jedinečné, ale nemusí být po sobě jdoucí. Jinými slovy, nejsou to čísla řádků a neměli byste je takto používat. Takže byste nikdy neměli potřebovat snižovat hodnoty vytvořené automatickým zvyšováním.



  1. Uložte soubor PDF v MySQL

  2. SQL - tisk mnoha slov mezi každý sloupec s mnoha podmínkami

  3. PŘIDAT SLOUPEK MySQL

  4. Proč mysqli vydává příkazy mimo synchronizaci?