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;