You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Automate添加Dataverse表行时如何避免插入重复值

Dataverse批量插入跳过重复行、备用键不生效解决方案

备用键未生效的核心原因

备用键本身不会自动拦截普通的Create插入请求,只有Upsert(更新插入)操作才会触发备用键的重复匹配逻辑,配置没生效大概率是之前用了普通Create操作做批量插入。

免单独查询的批量去重插入方案

直接使用批量Upsert请求即可实现自带重复校验,不需要提前做单条查询,性能符合大数据量插入的要求:

  • 首先确认你创建的备用键已经发布,绑定的列名、数据类型和你判断重复的ID列完全匹配,提前过滤掉待插入数据中ID列为空的记录(空值不会触发备用键校验)
  • 给每条待插入记录指定绑定的备用键,配置Upsert请求的DisableUpdate = true,即可实现匹配到重复ID时直接跳过插入,不存在时新增行

C# SDK 批量操作示例

var bulkUpsertRequest = new ExecuteMultipleRequest
{
    Settings = new ExecuteMultipleSettings
    {
        ContinueOnError = true,
        ReturnResponses = false
    },
    Requests = new OrganizationRequestCollection()
};

foreach (var item in 待插入数据集)
{
    // 此处替换为你的表逻辑名称、备用键名称、对应的ID值
    var entity = new Entity("你的表逻辑名", "你的备用键名称", item.你的ID列值);
    // 赋值其他字段
    entity["其他字段1逻辑名"] = item.字段值1;
    entity["其他字段2逻辑名"] = item.字段值2;

    bulkUpsertRequest.Requests.Add(new UpsertRequest
    {
        Target = entity,
        DisableUpdate = true // 匹配到重复时跳过,不需要更新已有数据
    });
}

// 执行请求
service.Execute(bulkUpsertRequest);

Web API 批量操作示例

批量请求中每条记录的构造规则如下,单批次建议控制在1000条以内避免超时:

PATCH [Organization URI]/api/data/v9.2/你的表逻辑名(你的备用键列名='对应ID值') HTTP/1.1
If-None-Match: *
Content-Type: application/json

{
    "其他字段1逻辑名": "字段值1",
    "其他字段2逻辑名": "字段值2"
}

If-None-Match: * 参数会让请求在匹配到重复ID时直接返回304,不执行插入或更新操作。

内容的提问来源于stack exchange,提问作者James W

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 22:15:06