我想在蟑螂数据库中执行upsert sql语句。
当表中不存在特定的 id 时,我想在表中插入行,并且当表中存在具有给定值的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)
);
这是我使用 knex 的sql语句。
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”不明确(候选对象:excluded.id, programs_tiers.id)。
我该如何解决?
答案 0 :(得分:1)
指定表名以解决歧义:
[...] WHERE program_id = ? AND programs_tiers.id = ?
^^^^^^^^^^^^^^^