Какова истинная потребность в sequence в Sql Server 2012?

StackOverflow https://stackoverflow.com/questions/4394973

  •  10-10-2019
  •  | 
  •  

Вопрос

В SQL Server 2012 (Denali) у нас появилась новая функция Последовательность.Рассмотрим приведенную ниже программу

/****** Create Sequence Object ******/
CREATE SEQUENCE GenerateSequence
START WITH 1
INCREMENT BY 1;

/****** Create a test Table ******/
Create TABLE tblTest
(
ID int NOT NULL PRIMARY KEY,
Name varchar(100) NOT NULL,
Age int NOT NULL
);

/****** Insert Some Records ******/
INSERT INTO tblTest(ID, Name, Age)
VALUES (NEXT VALUE FOR GenerateSequence, 'Name1',10),
(NEXT VALUE FOR GenerateSequence, 'Name2',20),
(NEXT VALUE FOR GenerateSequence, 'Name3',30),
(NEXT VALUE FOR GenerateSequence, 'Name4',40);

/****** Display result******/
SELECT * FROM tblTest;

Выходной сигнал

ID Name     Age
1  Name1    10
2  Name2    20
3  Name3    30
4  Name4    40

Вместо этого мы можем использовать столбец identity, например

Create TABLE tblTest
(
ID int NOT NULL PRIMARY KEY Identity,
Name varchar(100) NOT NULL,
Age int NOT NULL
);

и может заполняться следующим образом

INSERT INTO tblTest(Name, Age)
VALUES ('Name1',10),
VALUES ('Name2',20)... 

и т.д.чтобы получить тот же результат

Тогда какой дополнительной выгоды мы добьемся, используя sequence?

Это было полезно?

Решение

Это можно использовать между различными таблицами базы данных, чтобы сохранить уникальный идентификатор между несколькими таблицами.

Взгляните на Последовательности SQL и создание последовательности чисел в SQL Server 2011

Объект последовательности SQL Server генерирует последовательность чисел точно так же, как столбец идентификатора в таблицах sql.Но преимущество порядковых номеров заключается в том, что объект порядкового номера не ограничен одной таблицей sql.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top