Postgresql 如何删除外星长生不老药中的主键列
当我在迁移中使用remove键时,它不是删除表中的约束,而是只删除列名。请帮助我如何创建该迁移文件Postgresql 如何删除外星长生不老药中的主键列,postgresql,elixir,ecto,Postgresql,Elixir,Ecto,当我在迁移中使用remove键时,它不是删除表中的约束,而是只删除列名。请帮助我如何创建该迁移文件 defmodule ControlCenter.Repo.Migrations.CreateRemedyTable do use Ecto.Migration def up do create table(:remedy, primary_key: false) do add :remedy_code, :string, primary_key: true add :de
defmodule ControlCenter.Repo.Migrations.CreateRemedyTable do
use Ecto.Migration
def up do
create table(:remedy, primary_key: false) do
add :remedy_code, :string, primary_key: true
add :description, :string
add :cause_code, :string, primary_key: true
end
end
def down do
drop table(:remedy)
end
end
我想从表中删除原因代码如果您想删除列,您需要在将列修改为不属于复合主键后删除该列:
alter table("remedy") do
modify(:cause_code, primary_key: false)
remove(:cause_code)
end
如果要为此迁移删除它,请将其添加到up
函数中。如果要一次性删除它,您可以导入exto.Query
并在iex-S mix
中执行上述操作。请记住,没有一个好的解决方案可以通过删除列来向下迁移,特别是当它是复合键的一部分时