Я пытаюсь установить некоторые идентификаторы для группы строк в базе данных, где столбец идентификатора является идентификатором.
Я создал курсор для циклического перемещения по строкам и обновления идентификаторов с увеличением отрицательных чисел (-1, -2, -3 и т. Д.).
Когда я обновил только одну строку, включив 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
Кто-нибудь знает, что я делаю не так?