给个我在用的方案给你吧,我用procedure+table实现
1.首先是建立table存储序号,有两个字段CODE1,CODE2
CODE1是固定码,因为你可能很多项目要用到自增型
CODE2就是已用掉的序号
这样用code1做区别,比如项目1我可以用A01
或者你可以用更灵活点,用项目名称+年月,例:OT201207,这样你的序号可以做到每个月从1又开始重新计数
表脚本如下
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblGetNumber]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[tblGetNumber]
GO
CREATE TABLE [dbo].[tblGetNumber] (
[Code1] [varchar] (50) COLLATE Chinese_Taiwan_Stroke_CI_AS NOT NULL ,
[Code2] [int] NOT NULL
) ON [PRIMARY]
GO
CREATE INDEX [IDX_CODE1] ON [dbo].[tblGetNumber]([Code1]) ON [PRIMARY]
GO
2.
2. 其次建立procedure,实现取号作业,取成功则code2+1,
procedure 脚本如下
CREATE PROCEDURE [dbo].[sp_GetNum