I SQL Server kan du bruge IDENTITY()
funktion til at indsætte en identitetskolonne i en ny tabel.
Denne funktion må dog ikke forveksles med IDENTITY()
ejendom , som bruges sammen med CREATE TABLE
og ALTER TABLE
udsagn.
IDENTITY()
funktion bruges kun i en SELECT
sætning med en INTO
tabelklausul. Så du kan bruge det, når du for eksempel overfører data fra en tabel til en anden.
Syntaks
Syntaksen ser sådan ud:
IDENTITY (data_type [ , seed , increment ] ) AS column_name
data_type argument angiver datatypen for identitetskolonnen. Gyldige datatyper er alle datatyper i heltalsdatatypekategorien, undtagen bit og decimal .
frøet er den værdi, der bruges til den allerførste række indlæst i tabellen.
stigningen er den trinvise værdi, der føjes til identitetsværdien for den forrige række, der blev indlæst.
kolonnenavn argument angiver navnet på den identitetskolonne, du vil oprette.
Eksempel 1 – Grundlæggende brug
Her er et grundlæggende kodeeksempel.
SELECT IDENTITY(int, 101, 10) AS pet_id, PetName AS pet_name INTO BestFriends FROM Pets;
Dette vælger data fra Kæledyr tabel og indsætter den i en ny tabel kaldet Bedstevenner . Den første kolonne er en identitetskolonne, som jeg opretter med IDENTITY()
fungere. I dette tilfælde satte jeg frøet til 101 og stigningen til 10. Jeg kalder den kolonne pet_id .
Jeg kalder den anden kolonne for kæledyrsnavn , og jeg udfylder det fra kolonnen kaldet PetName .
Her er hvad Kæledyrene er tabellen ser sådan ud:
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 | +---------+-----------+
Og her er hvad Bedstevennerne tabel ser ud efter overførsel af data:
SELECT * FROM BestFriends;
Resultat:
+----------+------------+ | pet_id | pet_name | |----------+------------| | 101 | Homer | | 111 | Felix | | 121 | Ruff | +----------+------------+
Så kæledyrsnavnene forbliver de samme, men identitetskolonnen indeholder forskellige værdier (fordi jeg brugte IDENTITY(int, 101, 10)
, sammenlignet med IDENTITY(1,1)
for Kæledyr tabel).