专注于.Net

享受编程的乐趣
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

SQL流水帐号的生成

Posted on 2008-03-10 17:15  古道飘零客  阅读(892)  评论(3编辑  收藏  举报
 1 --下面的代码生成长度为8的编号,编号以BH开头,其余6位为流水号。
 2 --得到新编号的函数
 3 CREATE FUNCTION f_NextBH()
 4 RETURNS char(8)
 5 AS
 6 BEGIN
 7     RETURN(SELECT 'BH'+RIGHT(1000001+ISNULL(RIGHT(MAX(BH),6),0),6FROM tb WITH(XLOCK,PAGLOCK))
 8 END
 9 GO
10 
11 --在表中应用函数
12 CREATE TABLE tb(
13 BH char(8PRIMARY KEY DEFAULT dbo.f_NextBH(),
14 col int)
15 
16 --插入资料
17 BEGIN TRAN
18     INSERT tb(col) VALUES(1)
19     INSERT tb(col) VALUES(2)
20     INSERT tb(col) VALUES(3)
21     DELETE tb WHERE col=3
22     INSERT tb(col) VALUES(4)
23     INSERT tb(BH,col) VALUES(dbo.f_NextBH(),14)
24 COMMIT TRAN
25 
26 --显示结果
27 SELECT * FROM tb
28 /*--结果
29 BH         col 
30 ---------------- ----------- 
31 BH000001  1
32 BH000002  2
33 BH000003  4
34 BH000004  14
35 --*/