2016-04-02 6 views
6

Ich habe den folgenden Befehl in postgresql:Auf Inset: column reference "score" ist mehrdeutig

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

ich die folgende Fehlermeldung erhalten:

column reference "score" is ambiguous 

Ich dachte, es war seltsam, da ich nur bin mit einer Tabelle. Irgendwelche Ideen?

Antwort

18

Auf der rechten Seite der = in der set Klausel, gibt es zwei Möglichkeiten für score: EXCLUDED.score und word_relations.score. Ersteres ist eine Möglichkeit, auf den einzufügenden Wert zuzugreifen; Letzteres eine Möglichkeit, auf den in der Zeile gespeicherten Wert zuzugreifen.

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

In diesem Fall wird 'word_relations.score' unterschiedlich von' EXCLUDED.score':

Ich würde dies als schreiben? Gibt es einen Grund für die Spaltung zwischen ihnen, als sie klar zum Ausdruck brachte, dass der Konflikt auf dieser Kolumne steht? – leoOrion

+0

word_relations.score ist der alte Wert, und EXCLUDED.score ist der neue Wert, den Sie jetzt einfügen –

Verwandte Themen