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 に答える