日期:2014-05-19  浏览次数:20902 次

从默认是00001开始每增加一条信息自增1?
从默认是00001开始每增加一条信息自增1?
跪求,SQL中

------解决方案--------------------

ALTER function get_cltbdNextno(@date datetime)
returns varchar(20)
as
begin
DECLARE @YEAR VARCHAR(2)
DECLARE @MONTH VARCHAR(4)
DECLARE @DAY VARCHAR(2)
DECLARE @NEWNO VARCHAR(20)
--取得年
SET @YEAR=SUBSTRING(CONVERT(VARCHAR(4),YEAR(@date)),3,2)
--取得月
IF LEN(CONVERT(VARCHAR(4),MONTH(@date)))> 1
SET @MONTH=CONVERT(VARCHAR(4),MONTH(@date))
ELSE
SET @MONTH= '0 '+CONVERT(VARCHAR(4),MONTH(@date))
--取得日
IF LEN(CONVERT(VARCHAR(4),day(@date)))> 1
SET @DAY=CONVERT(VARCHAR(4),day(@date))
ELSE
SET @DAY= '0 '+CONVERT(VARCHAR(4),day(@date))


SELECT @NEWNO=MAX(退补临时单号) FROM 材料退补单
WHERE SUBSTRING(退补临时单号,1,2)=@YEAR AND SUBSTRING(退补临时单号,3,2)=@MONTH
IF @NEWNO IS NULL
SET @NEWNO=@YEAR+@MONTH+@day+ '001 '
ELSE
SET @NEWNO=@YEAR+@MONTH+@day+RIGHT( '000000 '+CONVERT(VARCHAR, CONVERT(BIGINT,SUBSTRING(@NEWNO,5,3))+1),3)
return @newno+ '-B '
end


//调用 select dbo.get_cltbdNextno(getdate())
自动取得下一个编号
------解决方案--------------------
你可以做一个专门 创建编号的函数,然后要做到 事务唯一
------解决方案--------------------
并不一定需要一个这样的真实字段,建个自增长列.然后读取的时候转为字符串,不过这样删除后不能保证连继性
------解决方案--------------------
是啊,这样是不行的,人家要的是要保证字段的连继性