我有4个表我想添加一个名为Receptor_Name的列,每个层都有相应的类型
我知道我可以手动添加列并为每个表设置它,如下所示
alter table childcare add column Receptor_Name text;
update childcare set receptor_name = 'Childcares';
继续其他图层...
我想知道有一种方法可以循环遍历它们将列字段添加到每个表并根据表名更新它
答案 0 :(得分:0)
You can do that using dynamic SQL, EXECUTE
clause in PL/pgSQL is one way:
DO $$
DECLARE
tables text[] := ARRAY['childcare', 'schools', 'nursing homes', 'hospitals'];
tbl_name text;
BEGIN
FOREACH tbl_name IN ARRAY tables LOOP
EXECUTE
format('ALTER TABLE %I ADD receptor_name text;', tbl_name);
EXECUTE
format('UPDATE %I SET receptor_name = $1;', tbl_name)
USING initcap(tbl_name);
END LOOP;
END;
$$;