我需要在数据库中执行一个更新并返回一个值。在RETURNING中使用PostgreSQL关键字是可能的。
由于ecto不支持这一点,所以我想我必须使用片段,但我不知道如何做到这一点。这就是我所拥有的:
query = from(v in MyModel, 
 where: v.id == ^instance_id, 
 update: [
   inc: [counter: 1], 
 ]
)我想在更新后返回一些字段,例如计数器和id,所以我需要添加到查询中:RETURNING id, counter;
发布于 2016-07-14 13:08:49
如果使用Ecto.Repo.update_all all/3,则有一个选项:返回以传递字段返回列表
:返回-选择要返回的字段。如果为true,则返回给定结构中的所有字段。可能是字段列表,其中结构仍然返回,但只返回给定字段。或false,其中不返回任何内容(默认值)。并非所有数据库都支持此选项。
执行之后,您可以使用以下内容访问一个元组:
它返回一个包含条目数和作为第二个元素返回的任何结果的元组。如果数据库不支持在UPDATE语句中返回,或者没有选择返回结果,则第二个元素将为零。
就像这样:
result = from(v in MyModel, where: v.id == ^instance_id)
         |> MyRepo.update_all([inc: [counter: 1]], returning: [id, counter])https://stackoverflow.com/questions/38373732
复制相似问题