PostgreSQL 9.3:IF NOT NOT EXISTS

时间:2015-02-25 06:12:23

标签: postgresql postgresql-9.3

我想检查数据库中是否存在该表。

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"

2 个答案:

答案 0 :(得分:5)

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$

你应该用block

包围你的postgresql语句

答案 1 :(得分:0)

IF NOT EXISTS plpgsql 中出现的内容中无效。

它可以在CREATE TABLE IF NOT EXISTS foo等上下文中使用。

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

doc为此提供了以下代码段:

GET DIAGNOSTICS integer_var = ROW_COUNT;

如果integer_var(您之前需要声明的)是0,那么您知道该表不存在。

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