我正在尝试运行这个代码:
IF NOT EXISTS (
SELECT FROM information_schema.tables
WHERE table_schema = 'topgun' AND table_name = 'session'
)
THEN
CREATE TABLE topgun.session (
sid varchar NOT NULL COLLATE "default",
sess json NOT NULL,
expire timestamp(6) NOT NULL
) WITH (OIDS=FALSE);
ALTER TABLE topgun.session ADD CONSTRAINT "session_pkey" PRIMARY KEY ("sid") NOT DEFERRABLE INITIALLY IMMEDIATE;
CREATE INDEX "IDX_session_expire" ON topgun.session ("expire");
END IF;
我在这里试图创建一个表格、约束和索引(如果表格不存在)。即使我更改空行,也会得到各种语法错误。无论我做什么或在其后添加什么,
IF NOT EXISTS
始终会导致错误。就好像 PostgreSQL 根本不认识它一样。即使我从教程中复制代码片段,PostgreSQL 也会出问题。我使用的是 Heroku Postgres,版本号为 12.4。 SELECT
部分本身可以正常工作。 CREATE TABLE
、ALTER TABLE
和 CREATE INDEX
行在结构外也能正常工作。错误消息如下:SQL Error [42601]: ERROR: syntax error at or near "IF"
Position: 5