Mysql 我们真的需要在删除表之前删除外键吗?

Mysql 我们真的需要在删除表之前删除外键吗?,mysql,ruby-on-rails,ruby,Mysql,Ruby On Rails,Ruby,迁移 def self.up create_table :test_drafts do |t| t.string :title, :limit => 255, :null => false t.text :description t.integer :user_id, :null => false t.integer :test_id, :null => false t.timestamps en

迁移

def self.up
    create_table :test_drafts do |t|
      t.string :title, :limit => 255, :null => false
      t.text :description
      t.integer :user_id, :null => false
      t.integer :test_id, :null => false
      t.timestamps
    end

    add_foreign_key(:test_drafts,:user_id,:users,:cascade)
    add_foreign_key(:test_drafts,:test_id,:tests,:cascade)
  end

  def self.down
    drop_foreign_key(:test_drafts,:user_id)
    drop_foreign_key(:test_drafts,:test_id)
    drop_table(:test_drafts)
  end
我们真的需要在删除表之前删除外键吗? 我可以直接删除表而不删除外键吗?

是的,因为
是的,这是编写迁移的良好实践。很少有数据库不允许在表上定义任何外键时删除表


和Rails提供了在各种数据库上工作的能力,所以理想的是它建议考虑这样的最佳实践。

< P>这是依赖关系。首先,应该删除独立表,即使它们包含外键