我正在尝试在代码中使用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
你能帮帮我吗?
答案 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')