2

我想创建一个 Postgres 表并对其进行更改,但前提是它首先不存在。我不认为这应该是一个函数,因为它在应用程序启动期间只运行一次。我试图从pg-promise nodejs lib using执行这段代码client.none(sql, params),但它给了我一个错误syntax error at or near "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;
4

1 回答 1

2

您的代码几乎就在那里

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 $$;
于 2016-10-07T15:37:07.560 回答