Heroku是否支持外键和唯一约束?

时间:2012-06-05 17:02:58

标签: postgresql heroku

我正在考虑将Rails应用程序移动到Heroku。

通常,我向所有FK添加带有ON DELETE行为的FK约束。到目前为止,我已经通过编写原始SQL来添加约束来完成此操作,因为Rails迁移不提供这样做的方法。

我还在需要的地方添加了UNIQUE键。

如果我搬到Heroku,我仍然能够以这种方式添加约束吗?

提出这个问题的另一种方法是,我是否可以使用Heroku直接访问我的数据库,还是仅限于我在迁移中可以做的事情?

1 个答案:

答案 0 :(得分:1)

您可以使用connection.execute在迁移中执行所需的任何SQL,例如:

def up
    connection.execute(%q{
        alter table t add constraint c check (x in ('a', 'b', 'c'))
    })
end
def down
    connection.execute('alter table t drop constraint c')
end

如果您不想通过原始SQL管理FK,也可以使用foreigner为迁移添加适当的FK支持,schema.rb

您可以使用:unique => true add_index选项来获取唯一约束/索引。

我已经完成了所有这些,甚至添加了函数(SQL和Pl / pgSQL)和触发器到Heroku的专用PostgreSQL数据库。我不确定共享数据库支持多少,但肯定会有独特的索引,我很确定FK和CHECK也可用。