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

Using PL/pgSQL conditionals without creating a function

我想创建一个 Postgres table 并更改它,但前提是它首先不存在。我不认为这应该是一个函数,因为这 运行 在应用程序启动期间只有一次。我尝试使用 client.none(sql, params)pg-promise nodejs lib 执行此代码,但它给了我一个错误 syntax error at or near "IF",所以我猜它必须是其他执行方法,或者我的 SQL 从根本上来说是有缺陷的。谢谢!

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

您的代码就快完成了

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