我应该将"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