在PostgreSQL 9.5上合并

Lev*_*sta 1 sql postgresql

我正在尝试在PostgreSQL 9.5中进行合并,但出现以下错误:

ERROR:  syntax error at or near "MERGE"
LINE 1: MERGE INTO TP_ESTADO_EQUIPOS AS EQ
        ^

********** Error **********

ERROR: syntax error at or near "MERGE"
SQL state: 42601
Character: 1
Run Code Online (Sandbox Code Playgroud)

的SQL

MERGE INTO TP_ESTADO_EQUIPOS AS EQ
USING (SELECT * FROM TEMP_TABLE_STATE_EQUIPMENT) AS VEQ
ON EQ.ESTADO_EQUIPOS_ID = VEQ.ESTADO_EQUIPO_ID
 WHEN MATCHED THEN (
 EQ.TIEMPO_INICIO=VEQ.TIEMPO_INICIO,
 EQ.TIEMPO_FIN=VEQ.TIEMPO_FIN,
 ...
 )
WHEN NOT MATCHED THEN
INSERT(Estado_Equipos_ID,
        Tiempo_Inicio,
        ...
        )
        VALUES(VEQ.ESTADO_EQUIPO_ID,
                VEQ.Tiempo_Inicio,
                ...);
Run Code Online (Sandbox Code Playgroud)

我一直在阅读文档,可能不得不使用UPSERT,但是对于那是否一定是错误,我仍然不清楚。

Vao*_*sun 6

Postgres没有MERGE声明:

https://www.postgresql.org/docs/current/static/sql-commands.html

使用INSERT ON CONFLICT DO来代替:

https://www.postgresql.org/docs/current/static/sql-insert.html

MERGER声明的方向迈出了一步,但不一定一定是您所期望的:

https://wiki.postgresql.org/wiki/SQL_MERGE