“IF”PostgreSQL或其附近的语法错误

时间:2012-09-04 09:58:40

标签: postgresql if-statement

我正在尝试在代码中使用subselect,但它给了我一个错误。我找到了很多解决方案,但它仍然不起作用:

这是我的代码:

BEGIN;
IF (SELECT COUNT(*) FROM table1 WHERE Z = 'aaaaa') = 0

    THEN
    INSERT INTO table2 (X, Y) VALUES ("abc", 7)

END IF;
END;

和错误:

ERROR:  syntax error at or near "IF"
LINE 2: IF (SELECT COUNT(*) FROM table1 WHERE Path = 'aaaaa') = 0
        ^


********** Error **********

ERROR: syntax error at or near "IF"
SQL state: 42601
Character: 8

你能帮帮我吗?

1 个答案:

答案 0 :(得分:9)

在“BEGIN”之后删除分号?如果这是plpgsql函数的主体,那就是这样。

如果这是一个psql脚本,则需要将IF语句提供给plpgsql来执行,因此需要放入DO $$ ... $$构造。

或者,当然,你可以像这样重构:

INSERT INTO table2(x,y)
    SELECT 'abc', 7
    WHERE NOT EXISTS (SELECT 1 FROM table1 WHERE z = 'aaaaa')