下面是直接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(:)
但它没有提供约束
的选项答案 0 :(得分:0)
您可以将conflict_target:
作为{:constraint, constraint_name_as_atom}
传递给Repo.insert
或Repo.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
部分。