Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment utiliser la fonction IDENTITY() dans SQL Server

Dans SQL Server, vous pouvez utiliser le IDENTITY() fonction pour insérer une colonne d'identité dans une nouvelle table.

Cependant, cette fonction ne doit pas être confondue avec le IDENTITY() propriété , qui est utilisé avec le CREATE TABLE et ALTER TABLE déclarations.

Le IDENTITY() fonction est utilisé uniquement dans un SELECT instruction avec un INTO clause de table. Vous pouvez donc l'utiliser lors du transfert de données d'une table à une autre, par exemple.

Syntaxe

La syntaxe ressemble à ceci :

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

Le data_type L'argument spécifie le type de données de la colonne d'identité. Les types de données valides sont tous les types de données de la catégorie de type de données entier, à l'exception de bit et décimal .

La graine est la valeur utilisée pour la toute première ligne chargée dans la table.

L'incrément est la valeur incrémentielle qui est ajoutée à la valeur d'identité de la ligne précédente qui a été chargée.

Le nom_colonne L'argument fournit le nom de la colonne d'identité que vous souhaitez créer.

Exemple 1 - Utilisation de base

Voici un exemple de code de base.

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

Cela sélectionne les données des Animaux domestiques table et l'insère dans une nouvelle table appelée BestFriends . La première colonne est une colonne d'identité que je crée avec le IDENTITY() une fonction. Dans ce cas, j'ai défini la graine sur 101 et l'incrément sur 10. J'appelle cette colonne pet_id .

J'appelle la deuxième colonne pet_name , et je le remplis à partir de la colonne appelée PetName .

Voici ce que les animaux de compagnie le tableau ressemble à :

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

SELECT * FROM Pet;

Résultat :

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

Et voici ce que les meilleurs amis le tableau ressemble après le transfert des données :

SELECT * FROM BestFriends;

Résultat :

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

Ainsi, les noms d'animaux restent les mêmes, mais la colonne d'identité contient des valeurs différentes (parce que j'ai utilisé IDENTITY(int, 101, 10) , par rapport à IDENTITY(1,1) pour les Animaux tableau).