我正在尝试为 id 列是标识的数据库中的一堆行设置一些 id。
我创建了一个游标来循环遍历行并使用递增的负数(-1、-2、-3 等)更新 id。
当我只更新打开 IDENTITY_INSERT 的一行时,它工作正常,但是一旦我尝试在游标中使用它,它就会引发以下错误。
消息 8102,级别 16,状态 1,第 22 行无法更新标识列“myRowID”。
DECLARE @MinId INT;
SET @MinId = (SELECT MIN(myRowId) FROM myTable)-1;
DECLARE myCursor CURSOR
FOR
SELECT myRowId
FROM dbo.myTable
WHERE myRowId > 17095
OPEN myCursor
DECLARE @myRowId INT
FETCH NEXT FROM myCursor INTO @myRowId
WHILE (@@FETCH_STATUS <> -1)
BEGIN
SET IDENTITY_INSERT dbo.myTable ON;
--UPDATE dbo.myTable
--SET myRowId = @MinId
--WHERE myRowId = @myRowId;
PRINT (N'ID: ' + CAST(@myRowId AS VARCHAR(10)) + N' NewID: ' + CAST(@MinId AS VARCHAR(4)));
SET @MinId = @MinId - 1;
FETCH NEXT FROM myCursor INTO @myRowId
END
CLOSE myCursor
DEALLOCATE myCursor
GO
SET IDENTITY_INSERT dbo.myTable OFF;
GO
有谁知道我做错了什么?