-
@@IDENTITY
vrátí poslední hodnotu identity vygenerovanou pro jakoukoli tabulku v aktuální relaci, napříč všemi rozsahy. Tady musíte být opatrní , protože je to napříč obory. Můžete získat hodnotu ze spouštěče namísto aktuálního příkazu.
-
SCOPE_IDENTITY()
vrátí poslední hodnotu identity vygenerovanou pro jakoukoli tabulku v aktuální relaci a aktuálním rozsahu. Obecně to, co chcete používat .
-
IDENT_CURRENT('tableName')
vrátí poslední hodnotu identity vygenerovanou pro konkrétní tabulku v jakékoli relaci a libovolném rozsahu. To vám umožní určit, ze které tabulky chcete hodnotu, v případě, že výše uvedené dvě nejsou přesně to, co potřebujete (velmi vzácné ). Také, jak zmínil @Guy Starbuck:"Můžete to použít, pokud chcete získat aktuální hodnotu IDENTITY pro tabulku, do které jste nevložili záznam."
-
OUTPUT
klauzule INSERT
příkaz vám umožní přístup ke každému řádku, který byl vložen prostřednictvím tohoto příkazu. Vzhledem k tomu, že se vztahuje na konkrétní prohlášení, je přímější než ostatní výše uvedené funkce. Je však trochu podrobnější (budete muset vložit do tabulky proměnnou/dočasnou tabulku a poté se na ni dotazovat) a poskytuje výsledky i v případě chyby, kdy je příkaz vrácen. To znamená, že pokud váš dotaz používá plán paralelního provádění, je to jediná zaručená metoda pro získání identity (krátce k vypnutí paralelismu). Provádí se však před spouští a nelze je použít k vrácení hodnot generovaných spouštěčem.