我有一个有169个表的数据库
我需要在每个表中都有这个列:

wid integer not null primary key

我试过这个(感谢https://stackoverflow.com/users/27535/gbn的解决方案):
SELECT
  'ALTER TABLE ' + T.name + ' ADD foo int NULL'
FROM
  sys.tables AS T
WHERE
  T.is_ms_shipped = 0

但它在PostgreSQL上不起作用。
它只对tsql起作用。
如何在每个表中同时添加此列?

最佳答案

do $$
declare
    selectrow record;
begin
for selectrow in
    select
      'ALTER TABLE '|| T.mytable || ' ADD COLUMN foo integer NULL' as script
   from
      (
        select tablename as mytable from  pg_tables where schemaname  ='public' --your schema name here
      ) t
loop
execute selectrow.script;
end loop;
end;
$$;

您可以使用以下选择来测试是否所有表都随新列发生了更改
select
     table_name,COLUMN_NAME
 from
     INFORMATION_SCHEMA.COLUMNS
 where
   COLUMN_NAME='foo' -- <whatever your column name here>

07-24 09:37
查看更多