问题描述:
增加数据编号为XJNY-CP-20130001
增加数据编号为XJNY-CP-20130002
增加数据编号为XJNY-CP-20130003
第一个问题,自动生成编号,按照顺序往下排,这个自动取号代码怎么写?
第二个问题,如果我把其中编号为XJNY-CP-20130002的数据删除掉,那剩下的就为
XJNY-CP-20130001,XJNY-CP-20130003,为了避免出现漏号情况,在后面新增的时候就需要把这个XJNY-CP-20130002给填补上已保证不漏号,这个代码怎么写。就各位大神指教
增加数据编号为XJNY-CP-20130001
增加数据编号为XJNY-CP-20130002
增加数据编号为XJNY-CP-20130003
第一个问题,自动生成编号,按照顺序往下排,这个自动取号代码怎么写?
第二个问题,如果我把其中编号为XJNY-CP-20130002的数据删除掉,那剩下的就为
XJNY-CP-20130001,XJNY-CP-20130003,为了避免出现漏号情况,在后面新增的时候就需要把这个XJNY-CP-20130002给填补上已保证不漏号,这个代码怎么写。就各位大神指教
--1. 建表
create table tb(itemNo varchar(20))
--2. 建个存储过程最流水号
create proc GetMaxNo @itemNo varchar(20) output
as
set nocount on
declare @maxNo varchar(20),@i int
set @maxNo='XJNY-CP-'+cast(Year(getdate()) as varchar)
select @i=isnull(max(right(itemNo,4)),0)+1 from tb where itemNo like @maxNo+'%'
set @maxNo=@maxNo+right('0000'+cast(@i as varchar),5)set @itemNo=@maxNo
return
go
3. --新增时调用
declare @itemNo varchar(20)
exec GetMaxNo @itemNo output
insert into tb(itemNo) values(@itemNo)--测试,新增三次结果
select * from tb
/*
XJNY-CP-201300001
XJNY-CP-201300002
XJNY-CP-201300003*/
--1. 建表
create table tb(itemNo varchar(20))
--2. 建个存储过程最流水号
create proc GetMaxNo @itemNo varchar(20) output
as
set nocount on
declare @maxNo varchar(20),@i int
set @maxNo='XJNY-CP-'+cast(Year(getdate()) as varchar)
select @i=isnull(max(right(itemNo,4)),0)+1 from tb where itemNo like @maxNo+'%'
set @maxNo=@maxNo+right('0000'+cast(@i as varchar),5)set @itemNo=@maxNo
return
go
3. --新增时调用
declare @itemNo varchar(20)
exec GetMaxNo @itemNo output
insert into tb(itemNo) values(@itemNo)--测试,新增三次结果
select * from tb
/*
XJNY-CP-201300001
XJNY-CP-201300002
XJNY-CP-201300003*/象这种计算而产生的编号,建议不要删除,可以把它改为无效,删除了再被回这个编号是可以的,但是它的创建日期和上一条\下一条数据不连惯,会让人误是不是数据受到非法修改?
这个是可以取号了 ,但是如果我现在把XJNY-CP-201300002的删除掉 在新增的话他是直接从XJNY-CP-201300004 开始的,把XJNY-CP-201300002漏掉了
from tb
where 新增的删除标记字段 = 1这个就是你需要的编码,修改一下存储过程,先看有没有已做了删除标记的记录,如果有,就用这个编码,
如果没有,那么就用上面的存储过程的逻辑,创建一个新的编码。