@dfhkjhg

Как исправить ошибку: неоднозначная ссылка на столбец?

Вот так выглядит запрос
INSERT INTO users (balance, steamid, name, avatar) 
        VALUES (0, $1, $2, $3) 
        ON CONFLICT (steamid) DO 
        UPDATE SET name = $2, avatar = $3 WHERE steamid = $1;

Вот так выглядит таблица
CREATE TABLE users (
id BIGSERIAL NOT NULL PRIMARY KEY,
balance INTEGER NOT NULL,
steamid VARCHAR(50) NOT NULL UNIQUE,
name VARCHAR(50) NOT NULL,
avatar VARCHAR(100) NOT NULL,
tradelink_token VARCHAR(20),
tradelink_partner VARCHAR(20)
);

И вот такая ошибка:
error: неоднозначная ссылка на столбец "steamid"
  • Вопрос задан
  • 3881 просмотр
Решения вопроса 1
@galaxy
UPDATE SET name = $2, avatar = $3 WHERE users.steamid = $1;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@MaLuTkA_UA
Потому что вместо ожидания ответа нужно читать документацию!
По нормальному твой запрос должен выглядеть следующим образом:
INSERT INTO users (balance, steamid, name, avatar) 
        VALUES (0, $1, $2, $3) 
        ON CONFLICT (steamid) DO 
        UPDATE SET name = excluded.name, 
              avatar = excluded.avatav;

Условие для update тебе в данном случае не требуется, так как по нему и произошел конфликт. А служебное слово excluded применяет набор данных по которым и произошел конфликт.

Более подробно как это работает можете прочитать в документации
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы