Có, SQL 11 có các đối tượng SEQUENCE, hãy xem SQL Server v.Next (Denali):Sử dụng SEQUENCE .
Tạo trình tự thủ công là có thể, nhưng không được khuyến khích. Mẹo để thực hiện một trình tạo chuỗi là sử dụng UPDATE WITH OUTPUT trên một bảng tuần tự. Đây là mã giả:
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
Tôi đã bỏ qua một số chi tiết, nhưng đây là ý tưởng chung. Tuy nhiên, có một vấn đề lớn:bất kỳ giao dịch nào yêu cầu giá trị tiếp theo trên một chuỗi sẽ khóa trình tự đó cho đến khi nó cam kết, bởi vì nó sẽ đặt một khóa cập nhật trên giá trị trình tự. Điều này có nghĩa là tất cả các giao dịch phải nối tiếp nhau khi chèn các giá trị và sự suy giảm hiệu suất dẫn đến không thể chịu đựng được trong triển khai sản xuất thực tế.
Tôi thà để bạn gắn bó với các loại IDENTITY. Mặc dù không hoàn hảo nhưng chúng tốt hơn nhiều so với những gì bạn có thể tự mình đạt được.