sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man använder IDENTITY()-funktionen i SQL Server

I SQL Server kan du använda IDENTITY() funktion för att infoga en identitetskolumn i en ny tabell.

Den här funktionen ska dock inte förväxlas med IDENTITY() egendom , som används med CREATE TABLE och ALTER TABLE uttalanden.

IDENTITY() funktion används endast i en SELECT uttalande med en INTO tabellklausul. Så du kan använda den när du till exempel överför data från en tabell till en annan.

Syntax

Syntaxen ser ut så här:

IDENTITY (data_type [ , seed , increment ] ) AS column_name

data_type argument anger datatypen för identitetskolumnen. Giltiga datatyper är alla datatyper av heltalsdatatypkategorin, förutom bit och decimal .

fröet är värdet som används för den allra första raden som laddas in i tabellen.

ökningen är det inkrementella värdet som läggs till identitetsvärdet för den föregående raden som laddades.

kolumnnamn argument ger namnet på identitetskolumnen som du vill skapa.

Exempel 1 – Grundläggande användning

Här är ett grundläggande kodexempel.

SELECT 
  IDENTITY(int, 101, 10) AS pet_id,
  PetName AS pet_name
INTO BestFriends
FROM Pets;

Detta väljer data från Husdjur tabell och infogar den i en ny tabell som heter Bästa vänner . Den första kolumnen är en identitetskolumn som jag skapar med IDENTITY() fungera. I det här fallet ställer jag in kärnan till 101 och ökningen till 10. Jag kallar den kolumnen pet_id .

Jag kallar den andra kolumnen pet_name , och jag fyller i det från kolumnen som heter PetName .

Här är vad husdjuren har tabellen ser ut så här:

CREATE TABLE Pets (
    PetId int IDENTITY(1,1) PRIMARY KEY, 
    PetName varchar(255)
    );
INSERT INTO Pets (PetName)
VALUES ('Homer'), ('Felix'), ('Ruff');

SELECT * FROM Pet;

Resultat:

+---------+-----------+
| PetId   | PetName   |
|---------+-----------|
| 1       | Homer     |
| 2       | Felix     |
| 3       | Ruff      |
+---------+-----------+

Och här är vad bästa vännerna tabellen ser ut som efter överföring av data:

SELECT * FROM BestFriends;

Resultat:

+----------+------------+
| pet_id   | pet_name   |
|----------+------------|
| 101      | Homer      |
| 111      | Felix      |
| 121      | Ruff       |
+----------+------------+

Så husdjursnamnen förblir desamma, men identitetskolumnen innehåller olika värden (eftersom jag använde IDENTITY(int, 101, 10) , jämfört med IDENTITY(1,1) för husdjur tabell).


  1. Långsam LEFT JOIN på CTE med tidsintervall

  2. Viloläge UUID med PostgreSQL och SQL Server

  3. Operatörer för att extrahera JSON-delkomponenter

  4. Lagra bild till databas blob; hämta från db till Picturebox