我应该将"PRAGMA FOREIGNS KEYS = ON;"放在rails 4.0中的什么位置?

我知道它是连接设置,因此无论何时删除某些内容,我都必须使其滑入,但是我不知道将其放置在何处。我在选项中的database.yml中尝试过,但无法正常工作。谷歌不能把它放在哪里。我希望它使级联删除工作。

最佳答案

语法是这样的:

drop table if exists db_name.table_name


如果存在,则为db_name。零件是可选的。那里没有CASCADE,因此在使用DROP TABLE时SQLite根本不支持CASCADE,并且您无能为力来添加它(当然,除非您想破解SQLite C源代码并自己添加它)。使用SQLite时,您必须接受某些限制,这是其中之一。

如果您想同时对SQLite和MySQL使用一次迁移,则必须检查正在使用的数据库并执行适当的SQL或查找可在任何地方使用的东西(即,手动执行CASCADE)。我现在可以想到的一种检查您正在使用的数据库的简单方法是:

    case connection
    when ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
        # PostgreSQL things go here
    when ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter
        # MySQL things go here
    when ActiveRecord::ConnectionAdapters::SQLiteAdapter
        # SQLite things go here

...
end

09-10 06:05
查看更多