2016-04-02 15 views
6

我有PostgreSQL的以下命令:在插圖:列引用「分數」是不明確的

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`) 

我收到以下錯誤:

column reference "score" is ambiguous 

我覺得很奇怪,因爲我只使用一張桌子。有任何想法嗎?

回答

18

set子句中的=的右側,有兩種可能性scoreEXCLUDED.scoreword_relations.score。前者是一種訪問所插入值的方式;後者是訪問存儲在該行中的值的一種方式。

我會寫爲:

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

在這種情況下,將'word_relations.score'從'EXCLUDED.score'不同?當他們明確表示衝突在該欄目時,他們之間是否存在分歧? – leoOrion

+0

word_relations.score是舊值,EXCLUDED.score是您現在插入的新值 –