1.建种子表,这个表用来保留各个表今朝已利用到的最年夜序号
--种子表
createtableSEED(
BMvarchar(20)notnull,--表名
BHvarchar(12)notnull,--种子编号
constraintPK_SEEDprimarykey(BM)
)
go
2.当我们建一个新表时,同时把这个表名纪录到种子表中,如:
--向种子中表增加纪录
insertintoSEED(BM,BH)values(tablename,200211070000)
go
3.在数据库建一存储历程,主动天生新编号,此编号取当地利间,以是很多时分查询某些天的纪录时,这个序号十分有效
--为参数传送来的某个表主动天生编号
ifexists(select*fromsysobjectswherename=proc_getbh)
dropprocedureproc_getbh
go
createprocedureproc_getbh@BMvarchar(20)
as
declare@BHchar(12)
declare@TODAYchar(8)
begin
select@TODAY=convert(char(8),getdate(),112)
select@BH=BHfromSEEDwhereBM=@BM
if@BHisnullorleft(@BH,8)@TODAY
begin
select@BH=@TODAY+0000
end
select@BH=left(@BH,8)+right(0000+ltrim(convert(char(4),convert(int,right(@BH,4)))+1),4)
updateSEEDsetBH=@BHwhereBM=@BM
select@BHASBH
end