如何使用特定列名更新所有表

时间:2014-09-11 06:12:41

标签: sql database postgresql

我正在尝试更新所有以字符串开头的表格,例如'agg%'和column_name ='%userid%'... 但我没有在网上看到任何这样的例子,即使我能够找到选择所有具有特定列名和表名的表我需要做同样的事情来更新这些表:

    update TABLE_NAME set COLUMN_NAME='rajeev' WHERE COLUMN_NAME LIKE '%userid%'
and TABLE_NAME LIKE 'agg%'
FROM INFORMATION_SCHEMA.COLUMNS;

帮助将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:5)

获取条件的更新查询

     select 
        'update '||c.table_name||' set '||c.COLUMN_NAME||' = ''rajeev'';' 
         as my_update_query
     from 
        (select 
            table_name,COLUMN_NAME
         from INFORMATION_SCHEMA.COLUMNS 
         where table_name LIKE 'agg%' and COLUMN_NAME LIKE '%userid%') c

执行

 do $$
  declare
    arow record;
  begin
    for arow in
    select 
        'update '||c.table_name||' set '||c.COLUMN_NAME||' = ''rajeev'';' 
         as my_update_query
     from 
        (select 
            table_name,COLUMN_NAME
         from INFORMATION_SCHEMA.COLUMNS 
         where table_name LIKE 'agg%' and COLUMN_NAME LIKE '%userid%') c
    loop
     execute arow.my_update_query;
    end loop;
  end;
$$;