关于sql:在PostgreSQL 9.5上制作MERGE

Make MERGE on PostgreSQL 9.5

本问题已经有最佳答案,请猛点这里访问。

我尝试在PostgreSQL 9.5中进行合并,得到以下错误:

1
2
3
4
5
6
7
8
9
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

SQL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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,
                ...);

我一直在阅读文档,可能不得不使用"upsert",但我仍然不清楚这是否一定是错误。


Postgres没有合并语句:

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

INSERT ON COFLICT DO代替:

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

有一些针对MERGER声明的动向,但不一定如您所料:

https://wiki.postgresql.org/wiki/sql_合并