gpt4 book ai didi

sql - Ruby on Rails - 迁移、唯一列和索引(使用数组)

转载 作者:数据小太阳 更新时间:2023-10-29 08:08:43 25 4
gpt4 key购买 nike

这个问题已被问到这里,但一个答案给了我一个后续问题。

How do I make a column unique and index it in a Ruby on Rails migration?

add_index :table_name, :column_name, :unique => true

要将多个列一起索引,您传递一个列名数组而不是单个列名

add_index :table_name, [:column_name_a, :column_name_b]

我在网上浏览一些代码时看到了这个片段。

class AddIndexesToSyllabus < ActiveRecord::Migration
def change
add_index :syllabuses, :template_id, unique: true
add_index :syllabuses, :edit_id, unique: true
add_index :syllabuses, :view_id, unique: true
end
end

我不知道 unique: true 是什么,所以我搜索并找到了上述链接。但是,我必须问这个问题。是否可以像这样重新安排该代码。

class AddIndexesToSyllabus < ActiveRecord::Migration
def change
add_index :syllabuses, [:template_id, edit_id, view_id], unique: true
end
end

在上面的示例中,我们有表名、教学大纲以及三个列名(template_id、edit_id 和 view_id)。前面的问题让我相信上述是可能的,但没有得到证实。我正在尝试学习如何编写高效的代码,而我的建议效率更高。这行得通吗?

感谢您的帮助。

最佳答案

您可以通过任何一种方式创建唯一索引,但这两种方法并不等同。

定义多列索引将确保列组合的唯一性,因此这些组合都是有效的:

+-------------+---------+---------+
| template_id | edit_id | view_id |
+-------------+---------+---------+
| 1 | 1 | 1 |
+-------------+---------+---------+
| 1 | 2 | 1 |
+-------------+---------+---------+
| 2 | 1 | 1 |
+-------------+---------+---------+

而对于单独的索引,除了第一个组合之外的所有索引都会失败。

关于sql - Ruby on Rails - 迁移、唯一列和索引(使用数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24814601/

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