【发布时间】:2017-07-07 09:52:07
【问题描述】:
我需要交换具有唯一约束的值。我正在尝试使用如下所示的 update_all 函数。
from(e in Episode, where: e.show_id == ^id, update: [set: [position: fragment("position + 1")]])
|> Repo.update_all([])
当使用这个时,由于位置重复,我得到一个错误:
ERROR (unique_violation): duplicate key value violates unique constraint "position_show_id_index"
table: episodes
constraint: position_show_id_index
Key ("position", show_id)=(2, 27) already exists.
如何同时交换这些位置值?
【问题讨论】:
-
我认为一种方法是使用事务并首先检查并可能删除以前的记录,然后插入新记录。
标签: postgresql elixir phoenix-framework ecto