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

MySQL INSERT ....ON DUPLICATE UPDATE - Přidá jedničku k automatickému přírůstku

VLOŽTE... PŘI AKTUALIZACI DUPLIKÁTNÍHO KLÍČE je popsán jako "vložení ve smíšeném režimu" pro účely AUTO_INCREMENT InnoDB zacházení. Vložky se smíšeným režimem jsou v zásadě ty, kde je maximum počet požadovaných AUTO_INCREMENT hodnoty jsou známé, ale množství, které bude ve skutečnosti potřeba není.

Vložky ve smíšeném režimu se ve výchozím nastavení zpracovávají speciálně, jak je popsáno v Dokumenty MySQL :

Pokud používáte InnoDB, vaše alternativy jsou:

  1. Vyhněte se INSERT... PŘI AKTUALIZACI DUPLIKÁTNÍHO KLÍČE .
  2. Nastavte innodb_autoinc_lock_mode parametr na 0 , pro "tradiční" režim autoinkrementálního zámku, který zaručuje, že všechny INSERT příkazy přiřadí po sobě jdoucí hodnoty pro AUTO_INCREMENT sloupců. Toho je však dosaženo uzamčením během příkazu, takže s tímto nastavením je spojena ztráta výkonu.
  3. (Doporučeno) Ignorujte mezery v AUTO_INCREMENT sloupec.

Poznámka:AUTO_INCREMENT zpracování je zcela odlišné pod MyISAM, která toto chování nevykazuje.



  1. Vraťte seznam časových pásem podporovaných PostgreSQL

  2. Získejte všechna vložená ID při vkládání více řádků pomocí jednoho dotazu

  3. Jak funguje funkce STRING_ESCAPE() na serveru SQL Server (T-SQL)

  4. Jak převedu interval na počet hodin pomocí postgres?