Какова истинная потребность в sequence в Sql Server 2012?
-
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.