标识列是迄今为止在 SQL Server 中生成序列号的最快和最并发的解决方案。不过没必要把它弄得太复杂。只需一张用于生成标识值的表,并在年底将其重置。这是一个简单的例子:
-- Sequence generating table
create table SequenceGenerator (
ID integer identity(1, 1) primary key clustered
)
-- Generate a new number
insert into SequenceGenerator default values
select @@identity
-- Reset the sequence
truncate table SequenceGenerator
if ident_current('SequenceGenerator') <> 1 begin
dbcc checkident('SequenceGenerator', reseed, 0)
dbcc checkident('SequenceGenerator', reseed)
end else begin
dbcc checkident('SequenceGenerator', reseed, 1)
end