以Ecto格式插入或更新约束

时间:2017-11-22 14:52:20

标签: elixir phoenix-framework

下面是直接sql查询,

insert into reports as rp (time_track, affiliate_manager_id)
values (#{time_track},#{revenue})
ON CONFLICT ON CONSTRAINT report_base_ids
  DO UPDATE SET revenue = 1

如何用Ecto Elixir编写。

我试过

Report.upsert_by(:)

但它没有提供约束

的选项

1 个答案:

答案 0 :(得分:0)

您可以将conflict_target:作为{:constraint, constraint_name_as_atom}传递给Repo.insertRepo.insert_all以及on_conflict:并附上更新说明。这是一个例子:

Repo.insert(
  Schema, # module
  %{foo: "bar"}, # data
  on_conflict: [set: [revenue: 1]],
  conflict_target: {:constraint, :report_base_ids}
)

您可以在Repo.insert的文档中详细了解相关内容,特别是:on_conflict:conflict_target部分。