我需要在数据库中执行更新并返回一个值。可以使用PostgreSQL
中的RETURNING
关键字进行操作
由于ecto不支持,我想我必须使用fragment,但我不知道该怎么做。这就是我所拥有的:
query = from(v in MyModel,
where: v.id == ^instance_id,
update: [
inc: [counter: 1],
]
)
我想在更新后返回一些字段,例如计数器和ID,因此我需要添加到查询中:RETURNING id, counter
;
答案 0 :(得分:2)
在Ecto 3中,对于update_all不建议使用return:true,而建议在查询中使用select。所以您可以像这样解决它:
result = from(v in MyModel, where: v.id == ^instance_id, select: {v.id, v.counter})
|> MyRepo.update_all([inc: [counter: 1]])
答案 1 :(得分:1)