gpt4 book ai didi

sql - ActiveRecord 查找现有表索引

转载 作者:太空狗 更新时间:2023-10-30 01:38:41 27 4
gpt4 key购买 nike

我正在为我正在编写的插件编写一个迁移生成器,我需要能够找到一个表有哪些唯一索引,以便我可以修改现有的唯一索引以成为一个复合唯一索引。我一直在尝试找到一种方法来访问表具有 ActiveRecord 的索引。我只能找到 ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::indexes 方法,但不幸的是,这仅适用于 PosgreSQLAdapter。我需要能够支持其他主要数据库。

我首先对 schema.rb 文件进行 grep 查找索引,一开始这很有效,但我很快意识到这是一个糟糕的策略。

我在想,如果 ActiveRecord 不提供能够为多个数据库适配器执行此操作的方法,我也许能够编写特定于适配器的查询以从表中检索索引信息。如果我需要求助于此方法,确定正在使用的适配器的好方法是什么?

如果有人知道让 ActiveRecord 列出表索引信息的方法,那将是理想的。

最佳答案

这适用于 MySQL、SQLite3 和 Postgres:

ActiveRecord::Base.connection.tables.each do |table|
puts ActiveRecord::Base.connection.indexes(table).inspect
end

但我认为它只为您提供您专门创建的索引。

此外,要找出正在使用的适配器:

ActiveRecord::Base.connection.class

关于sql - ActiveRecord 查找现有表索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1683948/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com