sql update column, где имя столбца равно USER_KEY
Я хотел бы обновить все столбцы с именем столбца "USER_KEY" до значения "admin". Возможно ли это сделать?
Я могу получить все имена таблиц и столбцов с указанным именем столбца с помощью следующего сценария SQL:
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 '%USER_KEY%'
ORDER BY TableName
,ColumnName;
Но я не знаю, как использовать их в заявлении об обновлении.
1 ответ
Вы можете достичь этого с помощью PL/SQL (обратите внимание, что это синтаксис оракула, но идея должна быть такой же для SQL-сервера и другого SQL). что-то вроде следующего: создайте детали списка / таблицы, передайте значения, опираясь на операторы обновления SQL и выполнив оператор в цикле...
SET AUTOCOMMIT ON
BEGIN
FOR my_table_colums in (
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 '%user_key%'
order by tablename
,columnname)
LOOP
/*-- build your dynamic sql and assign to a variable --*/
mysql_update_statement := 'update '||table_colums.tablename ||' set '||table_colums.columnname||'= '''admin''';
/*-- display your dynamic update sql--*/
DBMS_OUTPUT.PUT_LINE(mysql_update_statement );
/*-- execute your dynamic update sql--*/
EXECUTE IMMEDIATE mysql_update_statement;
END LOOP;
END;
/