我有一个带有部分索引的 Postgres 表
CREATE UNIQUE INDEX my_unique_index
ON my_table
USING btree (cola, colb)
WHERE deleted = FALSE;
如果我编写原始查询,我可以通过 ON CONFLICT 进行更新插入
INSERT INTO my_table (cola, colb)
VALUES ('a', 'b')
ON CONFLICT (col_a, col_b) WHERE deleted = FALSE
DO UPDATE SET
cola = EXCLUDED.cola,
colb = EXCLUDED.colb;
但是当我尝试使用 typeorm 的 upsert 方法时,我收到 typeorm 错误“列(已删除 = FALSE)不存在)
我的用法是:
this.repo.upsert(
{ cola: 'a', colb: 'b' },
{
skipUpdateIfNoValuesChanged: true,
conflictPaths: ['cola','colb'],
indexPredicate: 'deleted = FALSE',
}
)
有人知道我做错了什么吗?似乎我正在关注 typeorm 文档,但不确定为什么我只使用 typeorm 收到错误。
尝试了不同的方法来设置唯一索引 WHERE 子句...在括号中,而不是在括号中...
有一个错误 https://github.com/typeorm/typeorm/issues/10191 显然没有已知的解决方法。