根据日期时间和随机量生成唯一ID!!
生活随笔
收集整理的這篇文章主要介紹了
根据日期时间和随机量生成唯一ID!!
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.建立一個MakeManID表,
主要有三個字段:Model,Item和MaxValue,
建立存儲過程GetMakeManIDValue如下:
CREATE?Proc?dbo.GetMakeManIDValue
(
@MaxValue?int?output,
@Model?varchar(10),
@Item?varchar(30)
)AS
declare?@errorNb?int?
Begin?Tran
select?@MaxValue=MaxValue?from?MakeManID?with?(UPDLOCK)?Where?Model=@Model?and?Item=@Item?
if?(@MaxValue?is?null?)
begin
????insert?into?MakeManID(Model,Item)values(@Model,@Item)
????set?@errorNb=@@error
????if?(@errorNb!=0)?goto?errHandle
????set?@MaxValue=1
end?else
begin
????set?@MaxValue=@MaxValue+1
????update?MakeManID?set?MaxValue=MaxValue+1?where?Model=@Model?and?Item=@Item
????set?@errorNb=@@error
????if?(@errorNb!=0)?goto?errHandle
end
????commit?Tran
????return
errHandle:
????rollback?tran
????RAISERROR(@errorNb,16,?1)
????set?@MaxValue=0
????return
GO
存儲過程主要完成得到MaxValue的值,然后加1.
2.建立一個man表,里面有組織ID,職工姓名等等字段。
然后添加一個存儲過程Add_Man.
CREATE?PROCEDURE?Add_Man
@GroupID?int,
@Name?varchar?(20),
@School?varchar?(20),
@Qualifications??varchar?(20),
@Positions?int,
@Salary?int,
@Evaluation?varchar?(255)
?AS?
set?xact_abort?on
declare?@ManID?char(10)
declare?@D?datetime
set?@D=GetDate()
declare?@strY?char(4)
Declare?@Item?varchar(7)
set?@Item=?right('000'+convert(varchar(3),@GroupID),3)+convert(varchar(4),DatePart(yyyy,@D))
declare?@max?int?
exec?dbo.GetMakeManIDValue?@max?out??,'ManID',@Item
set?@ManID=@Item+right('000'+convert(varchar(3),@max),3)
begin?tran
insert?into?Man([ManID],[PassWord],[Name],[School],[Qualifications],[Positions],[Salary],[Evaluation])
values?(@ManID,'123456',@Name,@School,@Qualifications,@Positions,@Salary,@Evaluation)
if?@@Error?!=0?goto?errHandle
commit?tran
????return
errHandle:
????set?@ManID=''
????rollback?tran
????return
GO
存儲過程主要完成能夠根據存儲過程GetMakeManIDValue來設置ManID和添加用戶信息!!
主要有三個字段:Model,Item和MaxValue,
建立存儲過程GetMakeManIDValue如下:
CREATE?Proc?dbo.GetMakeManIDValue
(
@MaxValue?int?output,
@Model?varchar(10),
@Item?varchar(30)
)AS
declare?@errorNb?int?
Begin?Tran
select?@MaxValue=MaxValue?from?MakeManID?with?(UPDLOCK)?Where?Model=@Model?and?Item=@Item?
if?(@MaxValue?is?null?)
begin
????insert?into?MakeManID(Model,Item)values(@Model,@Item)
????set?@errorNb=@@error
????if?(@errorNb!=0)?goto?errHandle
????set?@MaxValue=1
end?else
begin
????set?@MaxValue=@MaxValue+1
????update?MakeManID?set?MaxValue=MaxValue+1?where?Model=@Model?and?Item=@Item
????set?@errorNb=@@error
????if?(@errorNb!=0)?goto?errHandle
end
????commit?Tran
????return
errHandle:
????rollback?tran
????RAISERROR(@errorNb,16,?1)
????set?@MaxValue=0
????return
GO
存儲過程主要完成得到MaxValue的值,然后加1.
2.建立一個man表,里面有組織ID,職工姓名等等字段。
然后添加一個存儲過程Add_Man.
CREATE?PROCEDURE?Add_Man
@GroupID?int,
@Name?varchar?(20),
@School?varchar?(20),
@Qualifications??varchar?(20),
@Positions?int,
@Salary?int,
@Evaluation?varchar?(255)
?AS?
set?xact_abort?on
declare?@ManID?char(10)
declare?@D?datetime
set?@D=GetDate()
declare?@strY?char(4)
Declare?@Item?varchar(7)
set?@Item=?right('000'+convert(varchar(3),@GroupID),3)+convert(varchar(4),DatePart(yyyy,@D))
declare?@max?int?
exec?dbo.GetMakeManIDValue?@max?out??,'ManID',@Item
set?@ManID=@Item+right('000'+convert(varchar(3),@max),3)
begin?tran
insert?into?Man([ManID],[PassWord],[Name],[School],[Qualifications],[Positions],[Salary],[Evaluation])
values?(@ManID,'123456',@Name,@School,@Qualifications,@Positions,@Salary,@Evaluation)
if?@@Error?!=0?goto?errHandle
commit?tran
????return
errHandle:
????set?@ManID=''
????rollback?tran
????return
GO
存儲過程主要完成能夠根據存儲過程GetMakeManIDValue來設置ManID和添加用戶信息!!
轉載于:https://www.cnblogs.com/yagebuqq/archive/2008/06/26/1230438.html
總結
以上是生活随笔為你收集整理的根据日期时间和随机量生成唯一ID!!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何设置库模板
- 下一篇: Silverlight教程第四部分:使用