Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So verwenden Sie die IDENTITY()-Funktion in SQL Server

In SQL Server können Sie die IDENTITY() verwenden Funktion zum Einfügen einer Identitätsspalte in eine neue Tabelle.

Diese Funktion ist jedoch nicht mit der IDENTITY() zu verwechseln Eigentum , die mit CREATE TABLE verwendet wird und ALTER TABLE Aussagen.

Die IDENTITY() Funktion wird nur in einem SELECT verwendet Anweisung mit einem INTO Tabellenklausel. So können Sie es zum Beispiel beim Übertragen von Daten von einer Tabelle in eine andere verwenden.

Syntax

Die Syntax lautet wie folgt:

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

Der data_type Argument gibt den Datentyp der Identitätsspalte an. Gültige Datentypen sind alle Datentypen der ganzzahligen Datentypkategorie, mit Ausnahme von bit und dezimal .

Der Seed ist der Wert, der für die allererste in die Tabelle geladene Zeile verwendet wird.

Das Inkrement ist der inkrementelle Wert, der zum Identitätswert der vorherigen geladenen Zeile hinzugefügt wird.

Der column_name Das Argument stellt den Namen der Identitätsspalte bereit, die Sie erstellen möchten.

Beispiel 1 – Grundlegende Verwendung

Hier ist ein einfaches Codebeispiel.

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

Dies wählt Daten aus den Haustieren aus Tabelle und fügt sie in eine neue Tabelle namens BestFriends ein . Die erste Spalte ist eine Identitätsspalte, die ich mit IDENTITY() erstelle Funktion. In diesem Fall setze ich den Startwert auf 101 und das Inkrement auf 10. Ich nenne diese Spalte pet_id .

Die zweite Spalte nenne ich pet_name , und ich fülle das aus der Spalte mit dem Namen PetName .

Das sind die Haustiere Tabelle sieht so aus:

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

SELECT * FROM Pet;

Ergebnis:

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

Und das sind die BestFriends Tabelle sieht nach dem Übertragen der Daten so aus:

SELECT * FROM BestFriends;

Ergebnis:

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

Die Kosenamen bleiben also gleich, aber die Identitätsspalte enthält andere Werte (weil ich IDENTITY(int, 101, 10) verwendet habe , verglichen mit IDENTITY(1,1) für die Haustiere Tabelle).