在部分索引(indexPredicate)上进行 TypeORM 更新

问题描述 投票:0回答:1

我有一个带有部分索引的 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 子句...在括号中,而不是在括号中...

javascript postgresql typeorm
1个回答
0
投票

有一个错误 https://github.com/typeorm/typeorm/issues/10191 显然没有已知的解决方法。

© www.soinside.com 2019 - 2024. All rights reserved.