Postgresql 使用变量传递的名称创建架构
我想用变量传递的名称创建一个模式。 例如:Postgresql 使用变量传递的名称创建架构,postgresql,plpgsql,Postgresql,Plpgsql,我想用变量传递的名称创建一个模式。 例如: 您可以使用plpgsql,然后执行: CREATE OR REPLACE FUNCTION test1("name" character varying) RETURNS void AS $$ BEGIN EXECUTE 'CREATE SCHEMA '|| quote_ident($1); -- security RETURN; END; $$ LANGUAGE plpgsql VOLATILE COST 20; 用户搜索路径以更
您可以使用plpgsql,然后执行:
CREATE OR REPLACE FUNCTION test1("name" character varying)
RETURNS void AS
$$
BEGIN
EXECUTE 'CREATE SCHEMA '|| quote_ident($1); -- security
RETURN;
END;
$$
LANGUAGE plpgsql
VOLATILE
COST 20;
用户搜索路径以更改默认架构,以便您可以轻松地向其中添加表! 并使用带有%I的格式将架构名称转义为标识符 像这样:
CREATE OR REPLACE FUNCTION test1("name" character varying)
RETURNS void AS
$$
BEGIN
EXECUTE FORMAT('CREATE SCHEMA %I;', $1);
EXECUTE FORMAT('SET search_path TO %I;', $1);
CREATE TABLE table1(
column1 integer
);
RETURN;
END;
$$
LANGUAGE plpgsql
VOLATILE
COST 20;
建议您使用
使函数幂等。。如果不存在
CREATE OR REPLACE FUNCTION test1("name" character varying)
RETURNS void AS
$$
BEGIN
EXECUTE FORMAT('CREATE SCHEMA %I;', $1);
EXECUTE FORMAT('SET search_path TO %I;', $1);
CREATE TABLE table1(
column1 integer
);
RETURN;
END;
$$
LANGUAGE plpgsql
VOLATILE
COST 20;