ID = IDENTITY(int, 1,1) INTO Tabela

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

 

Dodaj komentarz