我想检查数据库中是否存在该表。
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"
答案 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 DIAGNOSTICS
与ROW_COUNT
结合使用。
doc为此提供了以下代码段:
GET DIAGNOSTICS integer_var = ROW_COUNT;
如果integer_var
(您之前需要声明的)是0,那么您知道该表不存在。
有关详细信息,请参阅Postgres doc。