Rails:在哪里为SQLite放置PRAGMA FOREIGN KEYS = ON

问题描述 投票:1回答:1

我应该把"PRAGMA FOREIGNS KEYS = ON;"放在rails 4.0中?

我知道它的连接设置所以我必须在任何时候删除某些内容时使用rails,但我不知道在哪里放它。我在选项中尝试使用database.yml,但它无法正常工作。不能谷歌把它放在哪里。我想让它进行级联删除工作。

ruby-on-rails sqlite database-connection
1个回答
1
投票

语法是这样的:

drop table if exists db_name.table_name

if存在和db_name的位置。零件是可选的。那里没有CASCADE,所以SQLite在使用DROP TABLE时根本不支持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
© www.soinside.com 2019 - 2024. All rights reserved.