Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 在不创建函数的情况下使用PL/pgSQL条件_Postgresql_Plpgsql_Pg Promise - Fatal编程技术网

Postgresql 在不创建函数的情况下使用PL/pgSQL条件

Postgresql 在不创建函数的情况下使用PL/pgSQL条件,postgresql,plpgsql,pg-promise,Postgresql,Plpgsql,Pg Promise,我想创建一个Postgres表并对其进行修改,但前提是它首先不存在。我认为这不应该是一个函数,因为它在应用程序启动期间只运行一次。我试图使用client.none(sql,params)执行此代码,但它在“IF”处或附近给了我一个错误语法错误,所以我猜它一定是其他执行方法,或者我的sql根本上有缺陷。谢谢 BEGIN IF NOT EXISTS ( SELECT 1 FROM information_schema.tables WHERE table_schema = $1 AN

我想创建一个Postgres表并对其进行修改,但前提是它首先不存在。我认为这不应该是一个函数,因为它在应用程序启动期间只运行一次。我试图使用
client.none(sql,params)
执行此代码,但它在“IF”处或附近给了我一个错误
语法错误,所以我猜它一定是其他执行方法,或者我的sql根本上有缺陷。谢谢

BEGIN
IF NOT EXISTS (
    SELECT 1 FROM information_schema.tables
    WHERE table_schema = $1 AND table_name = $2
) THEN
    CREATE TABLE $2~ (zoom smallint, idx bigint, tile bytea, PRIMARY KEY (zoom, idx));
    ALTER TABLE $2~ ALTER COLUMN tile SET STORAGE EXTERNAL;
END IF;
END;

你的代码就快到了

do $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM information_schema.tables
WHERE table_schema = $1 AND table_name = $2
) THEN
CREATE TABLE $2~ (zoom smallint, idx bigint, tile bytea, PRIMARY KEY (zoom, idx));
ALTER TABLE $2~ ALTER COLUMN tile SET STORAGE EXTERNAL;
END IF;
END $$;

@阿贝利斯托,这正是我想要的,谢谢!!!你能给我一个答案,我来解决吗?