2017-06-09 3 views
0

J'essaie d'upsert avec postgres en utilisant les valeurs d'un select. Il ressemble à:Postgres upsert en utilisant les résultats de la sélection

INSERT INTO foo (a, b, c) 
SELECT a_, b_, c_ 
-- hairy sql 
ON CONFLICT (...condition...) DO UPDATE 
SET "c"=??? 

sur les conflits, je veux utiliser l'une des valeurs de mon instruction select, mais je ne peux pas trouver la bonne syntaxe pour un alias il. Comment puis-je faire cela avec Postgres?

Répondre

2

Utilisez le mot-clé excluded:

INSERT INTO foo (a, b, c) 
SELECT a_, b_, c_ 
-- hairy sql 
ON CONFLICT (...condition...) DO UPDATE 
    SET c = excluded.c; 
+0

On dirait que fait l'affaire - un grand merci. – RYS