Ссылка на столбец xxx является неоднозначной (кандидаты: исключены.xxx, table.xxx) в выражении upsert - PullRequest
0 голосов
/ 03 июня 2019

Я бы хотел выполнить заявление upsert sql в БД тараканов.

Я хотел бы вставить строку в таблицу, если конкретный id не существует в таблице, и обновить столбец name , если в таблице существует идентификатор с данным значением.

Определение таблицы:

CREATE TABLE IF NOT EXISTS programs_tiers (
  id STRING PRIMARY KEY,
  program_id STRING NOT NULL REFERENCES programs (id),
  name STRING,
  created TIMESTAMPTZ DEFAULT current_timestamp(),
  UNIQUE(program_id, name)
);

Вот мой SQL-оператор, использующий knex .

 const response =  await this.knex.raw('INSERT INTO programs_tiers (id,name) values(?,?) ON CONFLICT(id) DO UPDATE SET name = excluded.name  WHERE program_id = ? AND id = ?',[tierId, tierName, programId, tierId]);

Я получаю следующую ошибку:

ошибка: ссылка на столбец "id" неоднозначна (кандидаты: excid.id, programs_tiers.id).

Как я могу решить это?

1 Ответ

1 голос
/ 03 июня 2019

Укажите имя таблицы, чтобы исправить неоднозначность:

[...] WHERE program_id = ? AND programs_tiers.id = ?
                               ^^^^^^^^^^^^^^^
...