ALTER proc [dbo].[showdingdan]
@username varchar(50),as
select @bh=[dbo].[f_NextBH]()insert into dingdan (bianhao,username,)
values (@bh,@username)函数是:ALTER FUNCTION [dbo].[f_NextBH]()
RETURNS char(12)
AS
BEGIN
DECLARE @dt CHAR(6)
SELECT @dt= CONVERT(CHAR(6), GETDATE(), 12)
RETURN(
SELECT @dt+RIGHT(1000001+ISNULL(RIGHT(MAX(bianhao),6),0),6)
FROM dingdan WITH(XLOCK,PAGLOCK)
WHERE bianhao like @dt+'%')
END当同时有两个用户(A,B)调用存存储过程showdingdan ,A执行到select @bh=[dbo].[f_NextBH]()得到@bh值, 但还没有执行insert语句,与此同时B执行到select @bh=[dbo].[f_NextBH]() 。那他岂不是得到与A用户一样的@bh值了。。这个算并发吗?或者是我哪里理解错了,知道的朋友说下,无限感谢。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货