我在我的表中使用 UUID 作为主键,以这种方式创建:
移民:
class CreateAccounts < ActiveRecord::Migration
def change
create_table :accounts, :id => false do |t|
t.uuid :uuid, :null => false
t.timestamps
end
execute "ALTER TABLE accounts ADD PRIMARY KEY (uuid);"
add_index :accounts, :uuid, :unique => true
end
end
模型:
class Account < ActiveRecord::Base
primary_key = :uuid
base.default_value_for(:uuid, :allows_nil => false) { UUIDTools::UUID.random_create.to_s }
end
但我现在看到我在主键 UUID 列上有双索引:
(1)我猜这来自ADD PRIMARY KEY
创建“XXX_pkey”索引,我可以安全地add_index :accounts, :uuid, :unique => true
在这个迁移和正在运行的数据库中删除?
(2)可以看到只使用了手动添加的索引,没有使用自动添加的。这是随机的吗?
(3)这些索引中的哪些应该被删除,以及通过 Rails 的迁移在生产中做到这一点的最佳方法是什么?