例如:
表A: id(自增列),subType(代号),name(名称),insertDate(日期)想得到的结果:
id -- subType -- name -- typeid -- insertDate1 -- a1001 -- 开始1 -- 1 -- 2009-12-01
2 -- a1002 -- 开始2 -- 1 -- 2009-12-01
3 -- a1003 -- 开始3 -- 1 -- 2009-12-01
4 -- b1001 -- 结束1 -- 2 -- 2009-12-01
5 -- b1002 -- 结束2 -- 2 -- 2009-12-01
6 -- b1003 -- 结束3 -- 2 -- 2009-12-01
7 -- a1001 -- 开始1 -- 1 -- 2010-01-01
8 -- a1002 -- 开始2 -- 1 -- 2010-01-01
9 -- a1003 -- 开始3 -- 1 -- 2010-01-01
10 -- b1001 -- 结束1 -- 2 -- 2010-01-01
11 -- b1002 -- 结束2 -- 2 -- 2010-01-01
12 -- b1003 -- 结束3 -- 2 -- 2010-01-01问题就在subType这列,这列是自动生成的,一次插入多条数据如何让该像ID列那样自增呢?这列前缀a b c d 这些是根据typeid来识别的,typeid关联另一张表.关键就是怎么生成像ID列那样的自增
表A: id(自增列),subType(代号),name(名称),insertDate(日期)想得到的结果:
id -- subType -- name -- typeid -- insertDate1 -- a1001 -- 开始1 -- 1 -- 2009-12-01
2 -- a1002 -- 开始2 -- 1 -- 2009-12-01
3 -- a1003 -- 开始3 -- 1 -- 2009-12-01
4 -- b1001 -- 结束1 -- 2 -- 2009-12-01
5 -- b1002 -- 结束2 -- 2 -- 2009-12-01
6 -- b1003 -- 结束3 -- 2 -- 2009-12-01
7 -- a1001 -- 开始1 -- 1 -- 2010-01-01
8 -- a1002 -- 开始2 -- 1 -- 2010-01-01
9 -- a1003 -- 开始3 -- 1 -- 2010-01-01
10 -- b1001 -- 结束1 -- 2 -- 2010-01-01
11 -- b1002 -- 结束2 -- 2 -- 2010-01-01
12 -- b1003 -- 结束3 -- 2 -- 2010-01-01问题就在subType这列,这列是自动生成的,一次插入多条数据如何让该像ID列那样自增呢?这列前缀a b c d 这些是根据typeid来识别的,typeid关联另一张表.关键就是怎么生成像ID列那样的自增
--得到新编号的函数
CREATE FUNCTION f_NextBH()
RETURNS char(8)
AS
BEGIN
RETURN(SELECT 'BH'+RIGHT(1000001+ISNULL(RIGHT(MAX(BH),6),0),6) FROM tb WITH(XLOCK,PAGLOCK))
END
GO--在表中应用函数
CREATE TABLE tb(
BH char(8) PRIMARY KEY DEFAULT dbo.f_NextBH(),
col int)--插入资料
BEGIN TRAN
INSERT tb(col) VALUES(1)
INSERT tb(col) VALUES(2)
INSERT tb(col) VALUES(3)
DELETE tb WHERE col=3
INSERT tb(col) VALUES(4)
INSERT tb(BH,col) VALUES(dbo.f_NextBH(),14)
COMMIT TRAN--显示结果
SELECT * FROM tb
/*--结果
BH col
---------------- -----------
BH000001 1
BH000002 2
BH000003 4
BH000004 14
--*/
?
因为前缀是根据typeid查出来的