id列がIDであるデータベース内の一連の行にいくつかのIDを設定しようとしています。
行をループし、負の数(-1、-2、-3など)をインクリメントしてIDを更新するカーソルを作成しました。
IDENTITY_INSERTをオンにして1行だけを更新すると、正常に機能しましたが、カーソルで使用しようとすると、次のエラーがスローされます。
メッセージ8102、レベル16、状態1、22行目ID列'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
誰かが私が間違っていることを知っていますか?