Да, SQL 11 има обекти SEQUENCE, вижте SQL Server v.Next (Denali) :Използване на SEQUENCE .
Създаването на ръчни последователности е възможно, но не се препоръчва. Номерът да направите генератор на последователности е да използвате АКТУАЛИЗАЦИЯ С ИЗХОД на таблица с последователности. Ето псевдокод:
CREATE TABLE Sequences (
Name sysname not null primary key,
Sequence bigint not null default 0);
GO
CREATE PROCEDURE sp_getSequence
@name sysname,
@value bigint output
AS
UPDATE Sequences
SET Sequence = Sequence + 1
OUTPUT @value = INSERTED.Sequence
WHERE Name = @name;
GO
Пропуснах някои подробности, но това е общата идея. Има обаче огромен проблем:всяка транзакция, изискваща следващата стойност в последователност, ще заключи тази последователност, докато не се ангажира, защото ще постави заключване на актуализиране на стойността на последователността. Това означава, че всички транзакциите трябва да се сериализират една след друга при вмъкване на стойности и влошаването на производителността, което води до това, е непоносимо при реални производствени внедрявания.
Бих предпочел да се придържате към типовете ИДЕНТИЧНОСТ. Въпреки че не са перфектни, те са много по-добри от това, което можете да постигнете сами.