sql >> Database >  >> RDS >> Sqlserver

Hoe de IDENTITY()-functie in SQL Server te gebruiken?

In SQL Server kunt u de IDENTITY() . gebruiken functie om een ​​identiteitskolom in een nieuwe tabel in te voegen.

Deze functie moet echter niet worden verward met de IDENTITY() eigendom , die wordt gebruikt met de CREATE TABLE en ALTER TABLE verklaringen.

De IDENTITY() functie wordt alleen gebruikt in een SELECT statement met een INTO tafel clausule. U kunt het dus gebruiken bij het overbrengen van gegevens van de ene tabel naar de andere, bijvoorbeeld.

Syntaxis

De syntaxis gaat als volgt:

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

Het data_type argument specificeert het gegevenstype van de identiteitskolom. Geldige gegevenstypen zijn alle gegevenstypen van de categorie van het gegevenstype integer, behalve bit en decimaal .

Het zaad is de waarde die wordt gebruikt voor de allereerste rij die in de tabel wordt geladen.

De verhoging is de incrementele waarde die wordt toegevoegd aan de identiteitswaarde van de vorige rij die werd geladen.

De kolomnaam argument geeft de naam van de identiteitskolom die u wilt maken.

Voorbeeld 1 – Basisgebruik

Hier is een eenvoudig codevoorbeeld.

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

Dit selecteert gegevens uit de Huisdieren tabel en voegt deze in een nieuwe tabel met de naam BestFriends . De eerste kolom is een identiteitskolom die ik maak met de IDENTITY() functie. In dit geval stel ik de seed in op 101 en de toename op 10. Ik noem die kolom pet_id .

Ik noem de tweede kolom pet_name , en ik vul dat in uit de kolom met de naam PetName .

Dit is wat de Huisdieren tabel ziet er als volgt uit:

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

SELECT * FROM Pet;

Resultaat:

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

En dit is wat de BestFriends tabel ziet er als volgt uit na het overzetten van de gegevens:

SELECT * FROM BestFriends;

Resultaat:

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

Dus de huisdierennamen blijven hetzelfde, maar de identiteitskolom bevat verschillende waarden (omdat ik IDENTITY(int, 101, 10) heb gebruikt , vergeleken met IDENTITY(1,1) voor de Huisdieren tafel).


  1. SQL-wijzigingstabel

  2. Hoe kan ik afbeeldingen opslaan en ophalen uit een MySQL-database met behulp van PHP?

  3. ExecuteScalar vs ExecuteNonQuery bij het retourneren van een identiteitswaarde

  4. Dubbele rijen in een tabel verwijderen