我们的一个用户ID已在数据库中的一个表中更新,但在其他63个表中未更新。我需要使用UserID列在所有其他表中更新此ID。
我已经设法从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;
Run Code Online (Sandbox Code Playgroud)
这给了我所有相关表和列名的列表。
我也修改了上面的查询以生成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 = …Run Code Online (Sandbox Code Playgroud)