sql >> Databáze >  >> RDS >> Sqlserver

Jak SQL Server generuje hodnoty ve sloupci identity?

Dopouštíte se běžného omylu převzetí pořadí v tabulce. Stoly nemají pořadí. Pouze výsledky mají pořadí, které není určeno, pokud není specifikováno explicitní ORDER BY.

Můžete si položit jinou otázku:jak je přiřazena hodnota generovaná identitou v případě souběžných vložek? Odpověď je jednoduchá:to je jedno . A pokud uděláte jakýkoli předpoklad o objednávce, váš kód je poškozen. Totéž platí pro mezery. Vaše aplikace by měla fungovat, i když jsou vygenerované identity zcela náhodné a správně napsaná aplikace bude fungovat, pokud je identita zcela náhodná. Použijte SCOPE_IDENTITY() pro načtení poslední vložené identity. Ještě lépe, použijte OUTPUT klauzule INSERT , funguje také pro víceřadé vložky.

Pro pořádek:identity jsou generovány v pořadí, ve kterém operace získávají přístup k proud protokolu .




  1. Chyba syntaxe FUNCTION

  2. Získává se chyba Registrace pluginu 'InnoDB' jako STORAGE ENGINE selhala při spouštění MySQL

  3. Nakonfigurujte mybatis pro použití existujícího připojení

  4. SQL uložená procedura pro kontrolu hodnoty yes/no v tabulce a provedení sql