Postgres添加列和更新

时间:2016-08-31 16:42:00

标签: sql postgresql

我有4个表我想添加一个名为Receptor_Name的列,每个层都有相应的类型

  1. 儿童保育2.学校3.疗养院4.医院
  2. 我知道我可以手动添加列并为每个表设置它,如下所示

    alter table childcare add column Receptor_Name text;
    update childcare set receptor_name = 'Childcares';
    

    继续其他图层...

    我想知道有一种方法可以循环遍历它们将列字段添加到每个表并根据表名更新它

1 个答案:

答案 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;
$$;