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

Jaký je standardní způsob získání posledního ID vložení?

Viz tato odpověď Načíst vložené ID řádku v SQL

Stručně řečeno, neexistuje žádný způsob křížové databáze, jak to udělat, kromě MAX(ID) - ale to není zaručený výsledek a má mnoho úskalí, např.

  • mezi posledním vložením a maximálním dotazem mohou být další vložky
  • nelze použít s tabulkami s vysokými transakcemi (max způsobí zámek čtení, metody specifické pro rdbms nečtou z žádné tabulky)

Standard ANSI, který se týká identity/autonumber/auto_increment/sekvencí, se poprvé objevil v SQL:2003 čeká na implementaci všemi hlavními RDBMS. S největší pravděpodobností bude připomínat sekvence Oracle/PostgreSQL.

Další změnou v SQL:2003 je OUTPUT USING CLAUSE ale je o tom velmi málo informací. Sybase a SQL Server s tím udělaly různé věci, takže zatím není jasné, jak to dopadne. SQL Server jej implementuje jako

INSERT INTO TBL(..)
OUTPUT inserted.identity_col
INTO @sometablevar
VALUES(..)


  1. Indexy MySQL – jaké jsou nejlepší postupy?

  2. Jak používat Enums ve Scala Slick?

  3. Používání Microsoft Access s Power BI

  4. Oracle Spool - Chybí kompletní informace