带有 NOT EXIST 语句的 IF 语句中的 Postgres 语法错误

Postgres syntax error in IF statement with NOT EXIST statement

我想在插入中使用 IF 语句。

INSERT INTO <table_name>(<columns>) 
VALUES (IF NOT EXISTS (<exist_statement>) THEN 
               (<first set of values>), 
               (<second set of values>) 
        ELSE 
               (<first set of values>) 
        END IF
);

但是出现如下错误:

syntax error at or near "NOT"
LINE 1: ...r_id, role_id, role_type, user_status) VALUES (IF NOT EXISTS...
                                                             ^

我试着把这段代码放在 DO:

DO $$ 
BEGIN
<code_block>
END
$$

但错误依旧。

您需要使用case:

INSERT INTO <table_name>(<columns>) 
VALUES (CASE WHEN NOT EXISTS (<exist_statement>) THEN 
               (<first set of values>), 
               (<second set of values>) 
        ELSE 
               (<fist set of values>) 
        END
);