光标不会生成唯一的ID

时间:2019-10-09 09:08:50

标签: .net sql-server

我的程序有问题,该程序会为我的程序生成一个唯一的编号。我使用此程序直到9年,并且一直有效。这是代码

DECLARE @PROG AS DECIMAL(20,0) 
DECLARE MYCURSOR CURSOR SCROLL_LOCKS FOR
SELECT PROG FROM PROGRESSIVI where sezione='DUCATO' AND ISTPR=5034
FOR UPDATE OF PROG
    OPEN MYCURSOR 
FETCH NEXT FROM MYCURSOR INTO @PROG
    if @@FETCH_STATUS = 0 BEGIN
        UPDATE PROGRESSIVI SET PROG = @PROG + 1
        WHERE CURRENT OF MYCURSOR 
        SELECT @PROG + 1
    END 
CLOSE MYCURSOR 
DEALLOCATE MYCURSOR 

两天之内,用户在同一秒使用该过程创建了SAME渐进式程序,这涉及很多问题。可能是某种SQL Server更新导致了此问题?是SQL Server 2008。

2 个答案:

答案 0 :(得分:0)

您可以在sql中使用NEWSEQUENTIALID()关键字。此关键字会为您键入的uniqueidentifier类型生成顺序ID。

请检查以下链接: Link

答案 1 :(得分:0)

非常感谢您的回答,但是问题是,现在我无法用“序列”代替生成标识符的方式。我只想了解为什么我的程序始终可以正常工作,但现在不再有效:​​( 有没有办法修复我之前编写的代码?有什么建议吗?