SSM*_*M89 2 database-migration elixir phoenix-framework
我正在使用Elixir和Phoenix,我有一个表,我想在这个表中添加一个新字段,但我希望这个字段是唯一的.由于我的DataBase在这个表中已经有一堆寄存器,我想用表中另一个字段的值填充新字段.
例如,它的帖子表,我正在添加新的字段名称,这将是unqe,并希望所有旧的寄存器用字段电子邮件中的值填充字段名称.
我怎样才能做到这一点 ?我是否在迁移中执行此操作?喜欢:
def change do
alter table(:posts) do
add :name, :string, null: false, default: :email
end
create unique_index(:posts, [:name])
end
Run Code Online (Sandbox Code Playgroud)
还是在模特儿?
请给她一点帮助,非常感谢.
您需要使用Ecto update_all来执行此操作:
alias Myapp.Repo
alias Myapp.Post
import Ecto.Query
from(p in Post, update: [set: [name: p.old_name]])
|> Repo.update_all([])
Run Code Online (Sandbox Code Playgroud)
将old_name设为旧字段,并将字段命名为您想要旧值的字段.
请参阅Ecto.Querydocs https://hexdocs.pm/ecto/Ecto.Repo.html#c:update_all/3
| 归档时间: |
|
| 查看次数: |
101 次 |
| 最近记录: |