【问题标题】:Rails 4.2 foreign keyRails 4.2 外键
【发布时间】:2014-11-29 10:05:31
【问题描述】:

Rails 4.2 新支持添加和删除外键(在迁移中),例如:

# add a foreign key to `articles.author_id` referencing `authors.id`
add_foreign_key :articles, :authors

我不明白的是:这是怎么回事

add_foreign_key :articles, :authors

与此不同:

add_column :articles, :author_id, :integer

感谢您的澄清!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 foreign-keys migration


    【解决方案1】:

    不同的是那一行:

    add_foreign_key :articles, :authors
    

    实际上会生成这个:

    ALTER TABLE "articles" ADD CONSTRAINT articles_author_id_fk FOREIGN KEY ("author_id") REFERENCES "authors" ("id");
    

    此时:

    add_column :articles, :author_id, :integer
    

    将生成:

    ALTER TABLE "articles" ADD COLUMN author_id INT(11);
    

    两者不同,因为add_foreign_key 将只添加一个foreign key 约束,而add_column 添加一个列而不是约束。

    【讨论】:

    • 谢谢。那么得出使用add_foreign_key 会带来更好的数据库性能(因为它添加了外键)的结论是否正确?
    • 从技术上讲,它减少 database performance,因为它强制数据库为每次更新/插入检查此约束。但它添加了referential integrity,即确保您的数据“有意义”,并且您不会得到不一致/孤立的数据
    猜你喜欢
    • 1970-01-01
    • 2015-08-23
    • 2015-08-19
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 2016-02-15
    • 2023-04-01
    • 2015-11-18
    相关资源
    最近更新 更多