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 DIAGNOSTICS
和 ROW_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 语句
我想检查 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 DIAGNOSTICS
和 ROW_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 语句