Ya, SQL 11 memiliki objek SEQUENCE, lihat SQL Server v.Next (Denali) :Menggunakan SEQUENCE .
Membuat urutan manual dimungkinkan, tetapi tidak disarankan. Trik untuk melakukan sequence generator adalah dengan menggunakan UPDATE WITH OUTPUT pada tabel sequence. Ini pseudo-codenya:
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
Saya meninggalkan beberapa detail, tetapi ini adalah ide umum. Namun, ada masalah besar:setiap transaksi yang meminta nilai berikutnya secara berurutan akan mengunci urutan itu sampai komit, karena itu akan menempatkan kunci pembaruan pada nilai urutan. Artinya semua transaksi harus bersambung satu sama lain saat memasukkan nilai dan penurunan kinerja yang dihasilkan tidak tertahankan dalam penerapan produksi nyata.
Saya lebih suka Anda tetap menggunakan tipe IDENTITY. Meskipun tidak sempurna, mereka jauh lebih baik daripada yang dapat Anda capai sendiri.