Postgres n'a pas implémenté d'équivalent à INSERT OR REPLACE
. Depuis le ON CONFLICT
docs (c'est moi qui souligne):
Il peut s'agir soit de DO NOTHING, soit d'une clause DO UPDATE spécifiant les détails exacts de l'action UPDATE à effectuer en cas de conflit.
Bien qu'il ne vous donne pas de raccourci pour le remplacement, ON CONFLICT DO UPDATE
s'applique plus généralement, car il vous permet de définir de nouvelles valeurs basées sur des données préexistantes. Par exemple :
INSERT INTO users (id, level)
VALUES (1, 0)
ON CONFLICT (id) DO UPDATE
SET level = users.level + 1;