2016-08-31 19 views
0

を更新します私は私が手動で...他の層のための継続的なこのPostgresは、私はそれぞれの層のために、私はそこにそれぞれのタイプでReceptor_Nameという列を追加したい4つのテーブル</p> <ol> <li>育児の2校3.老人ホーム4病院</li> </ol> <p>を持つ列を追加し、

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

のように各テーブルの列を追加し、それを設定することができます知っている

私はそれらをループする方法があることを思っていたテーブル名

+1

確かに動的SQLを使用すると、カーソルやループを作成してこのようなことを行うことができます。しかし、4列のテーブルと4つの更新ステートメントを追加するだけの場合、それはあなたの価値がないでしょう。また、レセプタ名全体をテーブル名に設定することは、あなたの価値があるとは思わない – Matt

答えて

0

に基づいて、各テーブルに列フィールドを追加し、それを更新しますが、動的SQLを使用して、PL/pgSQLではEXECUTE句が1であることを行うことができます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; 
$$; 
関連する問題

 関連する問題