Postgresql 在不创建函数的情况下使用PL/pgSQL条件
我想创建一个Postgres表并对其进行修改,但前提是它首先不存在。我认为这不应该是一个函数,因为它在应用程序启动期间只运行一次。我试图使用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
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 $$;
@阿贝利斯托,这正是我想要的,谢谢!!!你能给我一个答案,我来解决吗?