我们已经获得了这个最受欢迎的'表格,我们遇到了一个问题,该问题揭示了我们在user
,favorite_type
和favorite_id
上没有唯一约束这一事实。我已经进行了一次迁移,它将为这3个添加一个索引,但它不会起作用,因为我们现有的数据具有相同的条目集。其中还有其他数据(updated_at
,created_at
,id
)可以输掉,但却会造成不完美的匹配。
在rails(3.2.x)中是否有办法执行此操作,或者在(my
)SQL中使用某种方法?
我知道我可以拉出所有这些,然后分组,并映射删除所有额外的元素,但它是一个非常大的表(1mil +),我们无法进行长时间的迁移。
答案 0 :(得分:2)
将表结构复制到新表,添加唯一约束,然后插入所有记录。由于约束,重复项将失败。
CREATE TABLE tableTmp LIKE table;
添加约束,然后将所有记录插入临时表。
INSERT INTO tableTmp SELECT * FROM table
验证条目然后删除并重命名。
DROP TABLE table;
RENAME TABLE tableTmp TO table;