2016-04-02 11 views
6

ho il seguente comando in PostgreSQL:Sul riquadro: riferimento di colonna "score" è ambigua

INSERT INTO word_relations(word1_id, word2_id, score) VALUES($1, $2, $3) 
ON CONFLICT (word1_id, word2_id) DO UPDATE SET score = score + $3`) 

ottengo il seguente errore:

column reference "score" is ambiguous 

ho pensato che fosse strano come io sono solo usando una tabella Qualche idea?

risposta

18

Sul lato destro della = nella clausola set, ci sono due possibilità per score: EXCLUDED.score e word_relations.score. Il primo è un modo per accedere al valore inserito; il secondo un modo per accedere al valore memorizzato nella riga.

vorrei scrivere questo come:

ON CONFLICT (word1_id, word2_id) DO 
    UPDATE SET score = word_relations.score + EXCLUDED.score 
+0

Nel qual caso sarà 'word_relations.score' essere diversi da' EXCLUDED.score'? C'è una ragione per la scissione tra di loro quando è chiaramente affermato che il conflitto è su quella colonna ?? – leoOrion

+0

word_relations.score è il vecchio valore e EXCLUDED.score è il nuovo che stai inserendo ora –

Problemi correlati