sql >> Databáze >  >> RDS >> Sqlserver

IDENTITY() vs IDENTITY() v SQL Server:Jaký je rozdíl?

Může se to zdát divné, ale T-SQL má IDENTITY() vlastnost a IDENTITY() funkce, z nichž každá slouží (podobnému, ale) jinému účelu.

  • IDENTITY() vlastnost vytvoří sloupec identity v tabulce. Sloupec identity obsahuje automaticky se zvyšující identifikační číslo. Tato vlastnost se používá s CREATE TABLE a ALTER TABLE prohlášení.
  • IDENTITY() funkce se však používá pouze v SELECT příkaz s INTO klauzule tabulky pro vložení sloupce identity do nové tabulky.

K dispozici je také SQL-DMO Identity vlastnost, která odhaluje vlastnost identity řádku sloupce, ale tím se zde nebudu zabývat. Společnost Microsoft radí, že tato vlastnost bude v budoucí verzi SQL Serveru odstraněna a neměli byste ji používat v nových vývojových pracích.

Vlastnost IDENTITY()

Zde je příklad použití IDENTITY() vlastnost.

CREATE TABLE Pets (
    PetId int IDENTITY(1,1) PRIMARY KEY, 
    PetName varchar(255)
    );

Tento kód vytvoří tabulku se dvěma sloupci. První sloupec (PetId ) je sloupec identity (protože používám IDENTITY() vlastnost v její definici).

Nyní, když jsem vytvořil sloupec identity, mohu do PetName vkládat jména domácích mazlíčků sloupec bez nutnosti uvádět ID pro každý řádek.

INSERT INTO Pets (PetName)
VALUES ('Homer'), ('Felix'), ('Ruff');

SELECT * FROM Pet;

Výsledek:

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

V tomto případě číslování začíná na 1 a každý řádek se zvyšuje o 1. Je to proto, že jsem použil IDENTITY(1,1) určit, že počáteční hodnota je 1 a že se zvýší o 1 na každém novém řádku.

Funkce IDENTITY()

Jak již bylo zmíněno, IDENTITY() funkce se používá v SELECT INTO prohlášení. Zde je příklad použití IDENTITY() funkce.

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

SELECT * FROM BestFriends;

Výsledek:

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

Zde jsem vytvořil tabulku s názvem BestFriends a naplnil jej z Pets stůl.

V tomto případě jsem začal počítat na 101 a zvýšil jsem ho o 10. Všimněte si také, že funkce vyžaduje první argument k určení datového typu sloupce.


  1. pgmemcache vs Infinite Cache

  2. Jak získat všechny hodnoty ve sloupci pomocí PHP?

  3. Exportujte konkrétní řádky z tabulky PostgreSQL jako INSERT SQL skript

  4. Návrat XFS na Linux