PostgreSQL 9.3: IF NOT EXISTS

8
我想要检查数据库中是否存在该表。
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个回答

10
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语句


为什么这个有效? - thepurpleowl

0

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

它可以在类似于 CREATE TABLE IF NOT EXISTS foo 的上下文中使用。

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

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

GET DIAGNOSTICS integer_var = ROW_COUNT;

如果您之前已经声明了integer_var,并且它的值为0,那么您就知道该表不存在。
有关更多详细信息,请参阅Postgres文档

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接