如果我有几个包含同一个表的模式,有没有办法让我一次更新所有表?例如,如果我有3个模式,每个模式都有user
表,列first_name, last_name, email
,我想为所有3个模式中的每个phone_num
表添加user
列,有什么方法可以做到吗?我在postgresql文档中找不到方法...
提前致谢!
答案 0 :(得分: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;