Я обновляю идентификаторы новыми идентификаторами, но мне нужно сохранить тот же идентификатор для основной записи в таблице A и ее зависимых элементов в таблице B.
Кусок, заключенный в скобки в комментариях, является частью, которую я не могу понять. Мне нужно обновить все записи в таблице B, которые имеют одинаковый идентификатор с текущей записью, которую я просматриваю для таблицы A.
DECLARE CURSOR_A CURSOR FOR
SELECT * FROM TABLE_A
FOR UPDATE
OPEN CURSOR_A
FETCH NEXT FROM CURSOR_A
WHILE @@FETCH_STATUS = 0
BEGIN
BEGIN TRANSACTION
UPDATE KEYMASTERTABLE
SET RUNNING_NUMBER=RUNNING_NUMBER+1
WHERE TRANSACTION_TYPE='TABLE_A_NEXT_ID'
-- FOLLOWING CHUNK IS WRONG!!!
UPDATE TABLE_B
SET TABLE_B_ID=(SELECT RUNNING_NUMBER
FROM KEYMASTERTABLE WHERE TRANSACTION_TYPE='TABLE_A_NEXT_ID')
WHERE TABLE_B_ID = (SELECT TABLE_A_ID
FROM CURRENT OF CURSOR A)
-- END OF BAD CHUNK
UPDATE TABLE_A
SET TABLE_A_ID=(SELECT RUNNING_NUMBER
FROM KEYMASTERTABLE WHERE TRANSACTION_TYPE='TABLE_A_NEXT_ID')
WHERE CURRENT OF CURSOR_A
COMMIT
FETCH NEXT FROM CURSOR_A
END
CLOSE CURSOR_A
DEALLOCATE CURSOR_A
GO