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)
你可以帮帮我吗?
在"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)