想实现以下目标:
插入字段时,前两位不变,后五位自动增长,
例如北京地区,BJ00001,BJ00002.
兰州地区,LZ00001,LZ00002.。
又是北京地区,为BJ00003,BJ00004.
前两位由前段插入时传过来。最后把七位插入到表中,作为主键。。
不知道怎么实现??
插入字段时,前两位不变,后五位自动增长,
例如北京地区,BJ00001,BJ00002.
兰州地区,LZ00001,LZ00002.。
又是北京地区,为BJ00003,BJ00004.
前两位由前段插入时传过来。最后把七位插入到表中,作为主键。。
不知道怎么实现??
--得到新编号的函数
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
--*/
--你的对照改下就行了。
--下面的代码生成长度为8的编号,编号以BH开头,其余6位为流水号。
--得到新编号的函数
CREATE FUNCTION f_NextBH()
RETURNS varchar(7)
AS
BEGIN
RETURN(SELECT 'BJ'+RIGHT(1000001+ISNULL(RIGHT(MAX(BH),5),0),5) FROM tb WITH(XLOCK,PAGLOCK))
END
GO--在表中应用函数
CREATE TABLE tb(
BH varchar(8) PRIMARY KEY DEFAULT dbo.f_NextBH(),
col int)
RETURNS varchar(7)
AS
BEGIN
RETURN(SELECT @area+RIGHT(1000001+ISNULL(RIGHT(MAX(BH),5),0),5) FROM tb WITH(XLOCK,PAGLOCK) where left(bh,2)=@area )
END
GO--在表中应用函数
CREATE TABLE tb(
BH varchar(7),
areaname varchar(10))
goinsert into tb select dbo.f_NextBH('bj'),'北京地区1'
insert into tb select dbo.f_NextBH('bj'),'北京地区2'
insert into tb select dbo.f_NextBH('lz'),'兰州地区1'
insert into tb select dbo.f_NextBH('lz'),'兰州地区2'
insert into tb select dbo.f_NextBH('bj'),'北京地区3'
insert into tb select dbo.f_NextBH('bj'),'北京地区4'
goselect * from tb--结果:
BH areaname
------- ----------
bj00001 北京地区1
bj00002 北京地区2
lz00001 兰州地区1
lz00002 兰州地区2
bj00003 北京地区3
bj00004 北京地区4