2

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

这是我的代码:

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

你可以帮帮我吗?

4

1 回答 1

10

在“BEGIN”之后去掉分号?如果这是一个 plpgsql 函数的主体。

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

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

INSERT INTO table2(x,y)
    SELECT 'abc', 7
    WHERE NOT EXISTS (SELECT 1 FROM table1 WHERE z = 'aaaaa')
于 2012-09-04T10:17:29.847 回答