2
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2025-09-05 08:59:27 +08:00
discourse/db/migrate/20140623195618_fix_categories_constraint.rb

11 lines
597 B
Ruby

class FixCategoriesConstraint < ActiveRecord::Migration[4.2]
def change
remove_index :categories, name: 'index_categories_on_parent_category_id_and_name'
# Remove any previous duplicates
execute "DELETE FROM categories WHERE id IN (SELECT id FROM (SELECT id, row_number() over (partition BY parent_category_id, name ORDER BY id) AS rnum FROM categories) t WHERE t.rnum > 1)"
# Create a proper index for two categories not to have the same parent
execute "CREATE UNIQUE INDEX unique_index_categories_on_name ON categories (COALESCE(parent_category_id, -1), name)"
end
end