Один из идентификаторов наших пользователей был обновлен в одной таблице, но не в других 63 таблицах в базе данных. Мне нужно обновить этот идентификатор во всех других таблицах с помощью столбца UserID.
Мне удалось выбрать все нужные мне таблицы из sys.tables и sys.columns, я просто не уверен на 100%, как обновить значение в каждой из этих таблиц.
Я выбираю таблицы с помощью этого запроса:
SELECT c.name AS 'ColumnName'
,t.name AS 'TableName'
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name LIKE '%UserID%'
ORDER BY TableName
,ColumnName;
Это дает мне список всех соответствующих таблиц и имен столбцов.
Я изменил вышеуказанный запрос, чтобы также генерировать SQL:
declare @newID varchar(12) = '149080'
declare @oldID varchar(12) = '146423'
SELECT 'UPDATE ' + t.name + ' SET ' + c.name + ' = ' + @newID + ' WHERE ' + c.name + ' = ' + @oldID + ';'
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name = 'UserID'
Есть ли способ выполнить эти операторы?