sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan bruges IDENTITY()-funktionen i SQL Server

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).


  1. Udforsker Storage Engine-indstillinger for MariaDB

  2. SQL Pivot med flere kolonner

  3. Oprettelse af en SQL Server-tabel fra en C#-datatabel

  4. Kan jeg i MySQL kopiere en række til at indsætte i den samme tabel?