2016-02-14 48 views
0

如果我有幾個包含同一個表格的模式,有沒有辦法讓我一次更新所有表格?例如,如果我有3個模式,每個模式都有一個user表,其中有列first_name, last_name, email,我想爲所有3個模式中的每個user表添加一列phone_num,有沒有辦法做到這一點?我無法在postgresql文檔中找到一種方法...改變所有postgresql模式中的表格

在此先感謝!

回答

3

我想你想改變表格而不是更新表格。如果是,那麼下面的代碼將爲你工作,

-- Function: alter_table() 

-- DROP FUNCTION alter_table(); 

CREATE OR REPLACE FUNCTION alter_table() 
    RETURNS integer AS 
$BODY$ 

DECLARE 
    v_schema text; 
BEGIN 

FOR v_schema IN 
    SELECT quote_ident(nspname) 
    FROM pg_namespace n 
    WHERE nspname !~~ 'pg_%' 
    AND nspname <> 'information_schema' 
LOOP 
    EXECUTE 'SET LOCAL search_path = ' || v_schema; 
    ALTER TABLE "user" ADD COLUMN show_price boolean NOT NULL DEFAULT TRUE; 
END LOOP; 

return 1; 
    END; 
$BODY$ 
    LANGUAGE plpgsql VOLATILE 
    COST 100; 
ALTER FUNCTION alter_table() 
    OWNER TO postgres; 
相關問題