在之前的迁移中,我定义了:
create table(:my_table) do
add :reference_id, references(:references), null: false
(...)
end
现在我想删除引用和null: false
,但仍保留reference_id
字段。
所以我想要这样的东西:
alter table(:my_table) do
modify :reference_id, <SOME_TYPE>, null: true
end
我的数据库是Postgres,所以我认为应该是:bigint。
我有两个问题:
- 以上是否正确?
- 如果我理解正确,则无法直接回滚此迁移,因此我必须创建up
和down
函数。如果该代码位于我的迁移的up
中,那么down
应包含哪些内容?
答案 0 :(得分:0)
bigint
看起来对我不对。默认情况下,PostgreSQL中的id
字段被Ecto定义为bigint
类型。
modify
使用与add
相同的参数,因此您的代码将为:
modify :reference_id, :bigint, null: true
并且将是:
modify :reference_id, references(:references), null: false
编辑:
使用外键约束,除非你像up
这样删除外键约束,否则down将不起作用:
drop constraint(:my_table, "my_table_reference_id_fkey")