"IF"PostgreSQL或其附近的语法错误

jav*_*irl 1 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;
Run Code Online (Sandbox Code Playgroud)

和错误:

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
Run Code Online (Sandbox Code Playgroud)

你可以帮帮我吗?

ara*_*nid 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')
Run Code Online (Sandbox Code Playgroud)