Задать вопрос
@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"
  • Вопрос задан
  • 4067 просмотров
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Слёрм
    PostgreSQL База
    4 недели
    Далее
  • beONmax
    SQL и PostgreSQL для начинающих
    1 неделя
    Далее
  • Java Online Projects
    Микросервисы, Kafka, Docker, Spring Cloud, реактивный стек
    2 месяца
    Далее
Решения вопроса 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 применяет набор данных по которым и произошел конфликт.

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

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

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