Z dokumentacji technet:
Is used only in a SELECT statement with an INTO table clause to insert an identity column into a new table. Although similar, the IDENTITY function is not the IDENTITY property that is used with CREATE TABLE and ALTER TABLE. |
Polecenie SELECT … INTO … FROM ma wiele zalet :> Równoległy zapis (od wersji 2014) i zapis minimally logged wielokrotnie pozwolą zaoszczędzić sporo czasu.
Ale gdy chcemy by nowa tabela posiadała unikalny identyfikator wiersza, tak by założyć na niej np. klucz główny nie musimy kombinować. Istnieje funkcja, która działa tylko z poleceniem SELECT INTO i generuje dla nowego zbioru wypełnione pole IDENTITY o typie danych podanym w argumencie.
PRZYKŁAD
Baza WideWorldImporters, bierzemy pierwszą lepszą tabelę 🙂 i generujemy jakieś informacje i pole identity przy użyciu wspomnianej funkcji
SELECT ID = IDENTITY(int, 1,1), CustomerID, ile = count(*) INTO #tst FROM [WideWorldImporters].sales.Invoices GROUP BY CustomerID HAVING count(*) > 120
Zadziałało?
select top 10 * from #tst
Ale czy na pewno?
exec tempdb..sp_help #tst