22,210
社区成员
发帖
与我相关
我的任务
分享
BEGIN TRY
DECLARE @Nr INT --号码
,@YY VARCHAR(50) --年份两位
UPDATE a
SET @Nr = Nr = Nr + 1
WHERE YY = @YY
IF @@ROWCOUNT=0
BEGIN
INSERT INTO a(Nr,YY)values(1,@YY)
SET @Nr=1
END
END TRY
BEGIN CATCH
RAISERROR (N'取号失败',16,1)
END CATCH
BEGIN TRAN
UPDATE 表a
SET 最大值=最大值+1
WHERE 年份=2014 -- 这就锁住了
SELECT @v = 最大值
FROM 表a
WHERE 年份=2014
-- 把@v给一个字段赋上
IF 成功
COMMIT TRAN
ELSE
ROLLBACK TRAN --这就避免了加了1又不用的情况