代码之家  ›  专栏  ›  技术社区  ›  Prosto_Oleg

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

  •  0
  • Prosto_Oleg  · 技术社区  · 2 年前

    我想用 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
    $$
    

    但错误依然存在。

    1 回复  |  直到 2 年前
        1
  •  1
  •   Andronicus    2 年前

    你需要使用 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
    );