我有一个有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>