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

Hasura GraphQL嵌套Upsert变更发生冲突时如何停止关联嵌套操作?

你可以给嵌套的 Feed 插入操作添加 on_conflict 配置,让 Feed 插入发生冲突时不执行任何写入操作,就能满足「新建用户同步创建 Feed、更新用户时不修改/新增 Feed」的需求。


修改后的 Mutation 示例

mutation UserDetailsUpsert(
  $email: String!
  $picture: String
) {
  insert_users_one(
    object: {
      email: $email
      feed: { 
        data: {},
        # 新增嵌套的冲突处理规则
        on_conflict: {
          constraint: feed_pkey, # 替换为你 Feed 表主键对应的实际约束名
          update_columns: [] # 空数组代表冲突时不更新任何字段,无实际写入操作
        }
      }
      picture: $picture
    }
    on_conflict: { constraint: users_tid_email_key, update_columns: [picture] }
  ) {
    id
  }
}

逻辑说明

  • 新建用户场景:用户 ID 为新生成的值,关联的 Feed ID 不存在,会正常执行 Feed 插入逻辑
  • 用户已存在(Upsert 冲突)场景:尝试插入的 Feed ID 与已有 Feed 主键冲突,update_columns: [] 配置会让 Hasura 跳过所有更新操作,既不会修改原有 Feed 数据,也不会生成新的 Feed 记录,完全匹配需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:18:03