我添加了一个迁移,以根据以下命令将现有数据库的主键从自动生成的系统主键更改为复合键:
add_index :listings, [:telephone, :name, :latitude, :longitude] , :unique=>true
我的问题是:
该命令生成的索引将是一个整数?由于所有参数字段都是字符串。
如果我在创建数据库后运行此命令,它会重新生成所有行的键还是我必须为此运行单独的命令?
运行此命令时会有所不同吗?如果在运行时表中没有行,而不是在表有行之后运行?
谢谢
阅读下面的帖子后编辑:============================================ =========
这是我的模型:
# Table name: listings
#
# id :integer not null, primary key
# name :string(50) default("ERROR:Not Available"), not null
# telephone :string(15) default("ERROR:Not Available"), not null
# latitude :string(15) default("ERROR:Not Available"), not null
# longitude :string(15) default("ERROR:Not Available"), not null
# avatar :string(30) default("Not Available")
所以你可以看到主键是系统自动生成的 id 当我添加上面的命令时,那到底是做什么的呢?我认为它更改了 id 字段,使其成为基于 4 列值生成的整数。
您可以猜到,可能有超过 2 个同名的人。所以在这里保证唯一性的唯一真正方法是基于 4 列创建某种索引。
通过使用上面的命令,我做对了吗?这会加快查询速度吗?