首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tds适配器只支持on_conflict::raise (使用on_conflict选项插入)

Tds适配器只支持on_conflict::raise (使用on_conflict选项插入)
EN

Stack Overflow用户
提问于 2022-07-13 04:46:37
回答 1查看 30关注 0票数 0

我在凤凰城教程中学习,但在购物车行为中使用Tds适配器( Server)。使用on_conflict选项插入代码失败,下面是代码

代码语言:javascript
复制
def add_item_to_cart(%Cart{} = cart, %Catalog.Product{} = product) do
    %CartItem{quantity: 1, price_when_carted: product.price}
    |> CartItem.changeset(%{})
    |> Ecto.Changeset.put_assoc(:cart, cart)
    |> Ecto.Changeset.put_assoc(:product, product)
    |> Repo.insert(
      on_conflict: [inc: [quantity: 1]],
      conflict_target: [:cart_id, :product_id]
    )
  end

错误是Tds适配器只支持on_conflict: :raise,我正在按照本教程进行尝试,并想知道它是否是一个死胡同,或者是否有实现相同目标的替代方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-13 08:16:53

有三种选择。

1

  • the
  • 使用主机DB支持的内容(on_conflict: :raise),并从rescue子句
  • 执行一个1将增加quantity的查询,首先为[:cart_id, :product_id]发出select查询,如果它返回一个空结果,则调用add_item_to_cart/2,否则通过最佳的一个E 217/code>增加d12,使用本教程推荐的数据库(例如:PostgreSQL)H 218F 219
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72961062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档