PostgreSQL 9.3:如果不存在

PostgreSQL 9.3: IF NOT EXISTS

我想检查 table 是否存在于数据库中。

IF NOT EXISTS (SELECT * from INFORMATION_SCHEMA.Tables WHERE Table_name = 'test') THEN

    RAISE INFO 'Not exists';

else

    RAISE INFO 'Exists';

end if;

出现错误:

ERROR:  syntax error at or near "IF"

IF NOT EXISTS 在该上下文中无效(看起来像)plpgsql.

它可以用在 CREATE TABLE IF NOT EXISTS foo.

这样的上下文中

plpgsql 上下文中,您应该结合使用 GET DIAGNOSTICSROW_COUNT

该文档为此提供了以下代码片段:

GET DIAGNOSTICS integer_var = ROW_COUNT;

如果 integer_var(您需要事先声明)为 0,则您知道 table 不存在。

有关详细信息,请参阅 Postgres doc

DO
$do$
BEGIN
IF NOT EXISTS (SELECT * from INFORMATION_SCHEMA.Tables WHERE Table_name = 'test') THEN

    RAISE INFO 'Not exists';

else

    RAISE INFO 'Exists';

end if;
end;
$do$

你应该用块包围你的 postgresql 语句