如何解决流水号重复
camy 2006-06-04 11:29:54 以下是一个产生流水号的SP,产生的流水号类似200601200001, 发现使用这个流水号的模块里偶尔会出现重复的单号.
请问SP的执行是并行的还是队列方式?如果可以并发执行,估计有可能产生这种问题,能否设定这个SP执行完才能被再次调用?
另外,使用相关模块的电脑是单机多用户系统,一台主机2人操作,会不会因此导致流水号重复?
请高手帮我诊断一下.
CREATE PROCEDURE GetNewID
AS
DECLARE @TMP1 CHAR(4),@TMP2 CHAR(2),@TMP3 CHAR(2),@TMP4 CHAR(4),@TMP5 CHAR(4)
SET @TMP1=LTRIM(RTRIM(STR(YEAR(GETDATE()))))
SET @TMP2=LTRIM(RTRIM(STR(MONTH(GETDATE()))))
SET @TMP3=LTRIM(RTRIM(STR(DAY(GETDATE()))))
SELECT @TMP2=REPLICATE('0',2-LEN(@TMP2))+@TMP2
SELECT @TMP3=REPLICATE('0',2-LEN(@TMP3))+@TMP3
SELECT @tmpid=@TMP1+@TMP2+@TMP3
select @TMP1=RIGHT(RTRIM(MAX(NO)),4) from Int_Rcv_ID where LEFT(no,8)=@TMPID
SELECT @TMP1=ISNULL(@TMP1,'0000')
SELECT @TMP4=LTRIM(RTRIM(STR(CAST(@TMP1 AS INT)+1)))
SELECT @TMP4=REPLICATE('0',4-LEN(@TMP4))+@TMP4
SELECT @TMPID=RTRIM(@TMPID)+@TMP4
INSERT INTO Int_Rcv_ID (no) VALUES (@TMPID)
SELECT @TMPID NEWID