【发布时间】:2016-05-25 12:11:41
【问题描述】:
如果我有多个包含同一个表的模式,有没有办法一次更新所有表?例如,如果我有 3 个模式,每个模式都有一个带有 first_name, last_name, email 列的 user 表,并且我想为所有 3 个模式中的每个 user 表添加一个 phone_num 列,有没有办法我可以做它?我在 postgresql 文档中找不到方法...
提前致谢!
【问题讨论】:
标签: postgresql schema
如果我有多个包含同一个表的模式,有没有办法一次更新所有表?例如,如果我有 3 个模式,每个模式都有一个带有 first_name, last_name, email 列的 user 表,并且我想为所有 3 个模式中的每个 user 表添加一个 phone_num 列,有没有办法我可以做它?我在 postgresql 文档中找不到方法...
提前致谢!
【问题讨论】:
标签: postgresql schema
我认为您想更改表而不是更新表。如果是,那么下面的代码将为您工作,
-- 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;
【讨论】: