Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

IDENTITY() срещу IDENTITY() в SQL Server:Каква е разликата?

Може да изглежда странно, но T-SQL има IDENTITY() свойство и IDENTITY() функция, всяка от които служи за (подобно, но) различно предназначение.

  • IDENTITY() property създава колона за идентичност в таблица. Колоната за идентичност съдържа автоматично нарастващ идентификационен номер. Това свойство се използва с CREATE TABLE и ALTER TABLE изявления.
  • IDENTITY() функцията обаче се използва само в SELECT изявление с INTO клауза таблица за вмъкване на колона за идентичност в нова таблица.

Има и SQL-DMO Identity свойство, което разкрива свойството за идентичност на реда на колона, но няма да го разглеждам тук. Microsoft съветва, че това свойство ще бъде премахнато в бъдеща версия на SQL Server и че трябва да избягвате да го използвате в нова разработка.

Свойство IDENTITY()

Ето пример за използване на IDENTITY() собственост.

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

Този код създава таблица с две колони. Първата колона (PetId ) е колона за идентичност (защото използвам IDENTITY() свойство в неговата дефиниция).

Сега, след като създадох колона за идентичност, мога да вмъкна имена на домашни любимци в PetName колона, без да е необходимо да включвате идентификатор за всеки ред.

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

SELECT * FROM Pet;

Резултат:

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

В този случай номерирането започва от 1 и всеки ред се увеличава с 1. Това е така, защото използвах IDENTITY(1,1) за да укажете, че началната стойност е 1 и че се увеличава с 1 на всеки нов ред.

Функция IDENTITY()

Както споменахме, IDENTITY() функцията се използва в SELECT INTO изявление. Ето пример за използване на IDENTITY() функция.

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

SELECT * FROM BestFriends;

Резултат:

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

Тук създадох таблица, наречена BestFriends и го попълва от Pets маса.

В този случай започнах броенето на 101 и го увеличих с 10. Също така имайте предвид, че функцията изисква първия аргумент, за да посочи типа данни на колоната.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Завъртане с помощта на SQL Server 2000

  2. Трябва ли да изберете типовете данни MONEY или DECIMAL(x,y) в SQL Server?

  3. Използвайте OBJECTPROPERTY(), за да разберете дали дадена таблица е системна таблица в SQL Server

  4. Някои страхотни новини за клиентите на Standard Edition в SQL Server 2014

  5. Как да създадете уникално ограничение за колона за вече съществуваща таблица - SQL Server / TSQL урок, част 97