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

时间:2011-04-26 08:56:54

标签: 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
    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

我们真的需要在删除表之前删除外键吗? 我可以直接删除表而不删除外键吗?

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

是的,这是编写迁移的好方法。如果在其上定义了任何外键,则很少有数据库不允许删除表。

并且作为rails,您可以在各种数据库上工作,因此理想情况下建议您考虑这些最佳实践。

答案 2 :(得分:0)

是依赖性。首先,您应该删除独立表,即使它们包含外键。