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),6) FROM tb WITH(XLOCK,PAGLOCK))
8 END
9 GO
10
11 --在表中应用函数
12 CREATE TABLE tb(
13 BH char(8) PRIMARY 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 --*/
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),6) FROM tb WITH(XLOCK,PAGLOCK))
8 END
9 GO
10
11 --在表中应用函数
12 CREATE TABLE tb(
13 BH char(8) PRIMARY 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 --*/