Získávání generovaných klíčů

Pokud máme v tabulce definovány automaticky generované primární klíče, můžeme někdy potřebovat získat hodnoty těchto klíčů pro vložená data. Standardní postup je tento:

st.execute(
    "INSERT INTO myTable (b,c) VALUES ('hello',false);",
    Statement.RETURN_GENERATED_KEYS);

ResultSet keys = st.getGeneratedKeys();

V proměnné keys bude uložena tabulka s vygenerovanými klíči. Počet řádků této tabulky bude odpovídat počtu vložených řádků (a tudíž počtu vygenerovaných klíčů) a počet sloupců bude odpovídat počtu složek primárního klíče. Pokud bude primární klíč jednoduchý (tj. nebude složený) a bude vložen pouze jeden záznam, tabluka keys bude obsahovat jeden řádek a jeden sloupec.

Bohužel ne všechny JDBC ovladače tento způsob získávání vygenerovaných klíčů podporují. Pokud ne, je nutné nahlédnout do dokumentace daného databázového serveru a zjistit, jestli existuje jiný způsob získání naposledy generovaných primárních klíčů. Většina serverů tuto informaci poskytuje prostřednictvím nějaké SQL funkce (např. MySQL poskytuje funkci LAST_INSERT_ID() a hsqldb funkci IDENTITY()).